- ベストアンサー
Microsoft Foundation Class の選択ができない。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
もしかして、VC6のStandardエディション等をお使いですか。 そうであれば、MFCをスタティックリンクで使えるのは Professional版以上のはずなので、「諦めて共有DLLを使ってください」。 # そもそもすでにVC6の上位エディションはほぼ入手不能だと思います。
関連するQ&A
- 別のDLLのダイアログを・・・
VC++.NETでMFCアプリを開発しています。 コマンド側から、別のDLLのダイアログをCreateし、ShowWindow()したところで例外が発生します。 コマンド側は通常のDLLで作成し、「staticライブラリでMFCを使用する」で使用し、 ダイアログ側は拡張DLLで作成し、「共有DLLでMFCを使用する」で使用しております。 Create()するところで、コマンドのポインタをダイアログに渡すと例外が発生します。 理由がわかりません。教えてくださいm(__)m 説明が足りなければ補足いたします。
- ベストアンサー
- C・C++・C#
- 複数プロジェクトをビルドしたとき、DLLに新しく追加したClassのみがリンクエラーになる
VC++6.0上で、複数の関連するプロジェクトをすべてビルドしたときのリンクエラーで悩んでいます。 現在、ワークスペースには、以下の複数のプロジェクトがあります。 ・Mainとなるプロジェクト ・上記のMainプロジェクトがDependしている、DLLのプロジェクト 問題は、DLLプロジェクトに新しいClassを追加したところ、単体でビルドすると成功するにもかかわらず、MainプロジェクトをActiveにしてリビルドしたときに、新しく追加したClassだけが下のように未解決にされてしまうということです。 ”error LNK2001: 外部シンボルXXX(追加したクラスのコンストラクタ)は未解決です” このClassはDLLの内部で使用されており、Mainプロジェクトから直接呼ばれるClassではありません。また、このClassの使用箇所をDLLのソースからコメントアウトすると、リンクエラーは解消されます。 VC++に不慣れかつ、他人の作ったプロジェクトなこともあり、現在の設定内容がいま一つわかっていないところがあります。問題はそのあたりだと思うのですが、はっきりしません・・・。 調べてわかっていることは、以下です。 ・Mainプロジェクトから呼ばれるDLLのHeaderファイルにはパスが通っている。 ・Mainプロジェクトから呼ばれるDLLのLibraryにはパスが通っている。また、#pragmaによりリンクされている。 ・Mainプロジェクトから呼ばれるDLLにはパスが通っている。 ここを確認してみたらどうか?など、ヒントをもらえたらありがたいです。 よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- DLL作成で外部参照エラー?
VC歴1週間です。 現在VC++2010で動的ライブラリ(DLL)を作ろうとしていますが、 作成しようとしているDLL内部で使用している関数がLIB提供されていません。 このような場合、win32プロジェクト→dll作成 を選択した状態でプロパティ変更しないで、 DLLを作ろうとするとその関数が外部参照エラーになるかと思います。 このような場合、/FORCEで強制出力してしまって良いものでしょうか? それともVC++側の設定でエラーにならずDLL生成ができるようになるものでしょうか? linuxなら cc -shared -o foo.so foo.c でライブラリ等何も気にせずシェアードライブラリが作れたので困惑しています。 よろしくご教示お願いいたします。
- ベストアンサー
- C・C++・C#
- DLLからサードパーティDLLを使うには
現在VisualC++2010においてレギュラーDLLを作成しています。そのDLL内でサードパーティライブラリを使いたいのですが、MFCプロジェクトなどと同様にインポートライブラリ設定やDLLの配置を行なってもうまくいきません。具体的には、作成したレギュラーDLLをインポートしたプログラム実行時にdllinit.cpp内でDebug Assertionが出ます。 VC++においてDLL内からDLLを使用するのは一工夫いるということまではわかっているのですが、なにかよい解決策をご存知の方がおられましたらご教授願えれば幸いです。
- ベストアンサー
- C・C++・C#
- PHPでのClass使用について
これまで社内で1人でPHPコーディングを担当していたので、複数人での開発を経験した事がなく、Classを使用した事がありません。 PHPでもClassを使用するのが主流かと思うのですが、Classの有用性が今ひとつ理解出来ずにいます。 開発用のライブラリは用意しているのですが、「接続用function」などfunctionのみを使用してコードを纏めています。 現状このやり方で全く困っていないのですが、Classを使用する事でどんなメリットがあるのでしょうか? 使い慣れていないせいなのでしょうが、Class化する事で機能を纏め過ぎてより面倒臭くなっているような気がします…。
- ベストアンサー
- PHP
- 実行体を別のマシンで実行させたい
Windows Vistaマシン(PC)にインストールしたVisual Studio 2005でVC++により作製した実行体を、素の(Visual Studio 2005がインストールされていない)Windows XPマシン(PC)で、実行させたく存じます。 まず、Windows VistaマシンおよびインストールされているOSの詳細は、下記の通りです。 PC:プロセッサ →Intel Core2 Duo CPU T7250 @ 2GHz メモリ →2GB システムの種類→32bit OS OS:Windows Vista Home Premium SP2 次に、インストールしたVisual Studio 2005の詳細は、下記の通りです。 Visual Studio 2005:Version8.0.50727.867(vsvista.050727-8600) .NET FRAMEWORK :Version2.0.50727 SP2 次に、Windows XPマシンおよびインストールされているOSの詳細は、下記の通りです。 PC:プロセッサ →Intel Celeron M processor @ 1.3GHz メモリ →512MB システムの種類→32bit OS OS:Windows XP Home Version2002 SP3 次に、作製した実行体は、Visual C++ プロジェクトから「MFCアプリケーション」を選択し、Vistaマシン上でダブルクリックで実行するとウィンドウが発生し、ウィンドウ内には、ボタンが1つおよび入力テキストが1つ存在して「テキスト入力してOKならば、OKボタンを押下する」程度の簡単なプログラムをリンクしたものです。以下の要領でXPマシン側に実行体を移動し、実行体をダブルクリックで実行させようとしたのですが、いずれも「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決することがあります。」というダイアログが出現し、実行に失敗しました。以下、この実行体名を「text_input.exe」と称して失敗例を記述します。 1.「text_input.exe」をそのままXPマシンのROOTの直下に置いて実行した → NG 2.XPマシンに、 ・Microsoft .NET Framework Version 2.0 再頒布可能パッケージ (x86) ・Microsoft .NET Framework 2.0 日本語 Language Pack (x86) ・Microsoft Visual C++ 2005 再頒布可能パッケージ (x86) をインストールした後、「text_input.exe」をXPマシンのROOTの直下に置いて実行した → NG 3.「text_input.exe」を作製する際、「stdafx.h」内で、#pragma宣言をして下記のファイルもリンクした #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcm80.dll" ) #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcp80.dll" ) #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\msvcr80.dll" ) #pragma comment( manifest, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\Microsoft.VC80.CRT.manifest" ) #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\mfc80.dll" ) #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\mfc80u.dll" ) #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\mfcm80.dll" ) #pragma comment( dll, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\mfcm80u.dll" ) #pragma comment( manifest, "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC\Microsoft.VC80.MFC.manifest" ) その後、上記2項の状態のXPマシンのROOTの直下に「text_input.exe」を置いて実行した → NG いよいよ手立てがなくなりました。Windows並びにVisual Studioに精通されている方がおりましたら、素のWindows XPマシンで動作させる方法をご教示頂きたく、お願いいたします。
- 締切済み
- Windows系OS
- CWndを使うDLL
質問1 CWndのサブクラスを作りたいDLLは、以下のどのDLLとして作成すれば良いでしょうか? ・Win32 DLL ・MFC共有DLL ・MFC拡張DLL ちなみに、このDLLは、必ずしもMFCで作成されたアプリケーションでロードされるとは限りません。 質問2 上記選択でMFCになった場合、MFCのライブラリは動的リンクと静的リンクのどちらになるのでしょうか? 自分で選択できるのであれば、その方法を教えてください。 質問3 上記選択で静的リンクになった場合。 MSDNのページで調べると以下のような制限があるとのことですが、具体的には、こういうことでしょうか? ・DLL内で確保したメモリのポインタを上位からもらってもいけないし、上位へ返してもいけない。 ・MFC オブジェクト(CWndサブクラスへのポインタなど)を上位からもらってもいけないし、返してもいけない。 --- MSDN引用ここから 「レギュラー DLL 内のメモリ割り当てはすべて、DLL の範囲内に収める必要があります。 したがって、以下のポインタを呼び出し側の実行可能ファイルとやり取りすることはできません。 ・MFC オブジェクトへのポインタ ・MFC によって割り当てられたメモリへのポインタ --- MSDN引用ここまで よろしくお願いします。
- ベストアンサー
- C・C++・C#
- vc++6.0にてdllとlibraryを作成する方法
vc++6.0にてdllとlibraryを作成する方法 を知りたいのですが、dllとlibraryを それぞれ新規プロジェクトで立ち上げれば 作成できるのですが、dllを作成した際に libraryも作成(自動)されるようなことは できないのでしょうか?
- ベストアンサー
- C・C++・C#
お礼
早速、回答いただきありがとうございます。 ご指摘のとおり、VC6Standardエディションを使用しております。 残念ですがそのまま使用します。