• ベストアンサー

Microsoft Foundation Class の選択ができない。

VC++6.0を使用していますが、Microsoft Foundation Classの選択が「共有DLLでMFC使用」だけになっていて、「 MFCのスタティックライブラリを使用」を選択できません。どうすればいいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.1

もしかして、VC6のStandardエディション等をお使いですか。 そうであれば、MFCをスタティックリンクで使えるのは Professional版以上のはずなので、「諦めて共有DLLを使ってください」。 # そもそもすでにVC6の上位エディションはほぼ入手不能だと思います。

miyaneya0
質問者

お礼

早速、回答いただきありがとうございます。 ご指摘のとおり、VC6Standardエディションを使用しております。 残念ですがそのまま使用します。 

関連するQ&A

  • 別のDLLのダイアログを・・・

    VC++.NETでMFCアプリを開発しています。 コマンド側から、別のDLLのダイアログをCreateし、ShowWindow()したところで例外が発生します。 コマンド側は通常のDLLで作成し、「staticライブラリでMFCを使用する」で使用し、 ダイアログ側は拡張DLLで作成し、「共有DLLでMFCを使用する」で使用しております。 Create()するところで、コマンドのポインタをダイアログに渡すと例外が発生します。 理由がわかりません。教えてくださいm(__)m 説明が足りなければ補足いたします。

  • 複数プロジェクトをビルドしたとき、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にはパスが通っている。 ここを確認してみたらどうか?など、ヒントをもらえたらありがたいです。 よろしくお願いいたします。

  • DLL作成で外部参照エラー?

    VC歴1週間です。 現在VC++2010で動的ライブラリ(DLL)を作ろうとしていますが、 作成しようとしているDLL内部で使用している関数がLIB提供されていません。 このような場合、win32プロジェクト→dll作成 を選択した状態でプロパティ変更しないで、 DLLを作ろうとするとその関数が外部参照エラーになるかと思います。 このような場合、/FORCEで強制出力してしまって良いものでしょうか? それともVC++側の設定でエラーにならずDLL生成ができるようになるものでしょうか? linuxなら cc -shared -o foo.so foo.c でライブラリ等何も気にせずシェアードライブラリが作れたので困惑しています。 よろしくご教示お願いいたします。

  • DLLについて

    VC++でDLLを作成しようとしているのですがいくつか判らない点があります。 1. スタティックライブラリとスタティックリンクライブラリの違い。この二つの用語の違いが分かりません。 2.VBからVC++で作成したDLLを使用するときには.libファイルは必要ないのでしょうか。使用しなくても、使うことができたので。

  • DLLからサードパーティDLLを使うには

    現在VisualC++2010においてレギュラーDLLを作成しています。そのDLL内でサードパーティライブラリを使いたいのですが、MFCプロジェクトなどと同様にインポートライブラリ設定やDLLの配置を行なってもうまくいきません。具体的には、作成したレギュラーDLLをインポートしたプログラム実行時にdllinit.cpp内でDebug Assertionが出ます。 VC++においてDLL内からDLLを使用するのは一工夫いるということまではわかっているのですが、なにかよい解決策をご存知の方がおられましたらご教授願えれば幸いです。

  • MFC

    Visual StudioのMFC(Microsoft Foundation Class)に関して質問があります。 私は今Visual Studio 2010 Express editionを使用しているのですが、新規作成から共通ヘッダファイルを追加でMFCを追加できません。 これは無料版ではMFCは使えないということでしょうか? また、有料版ではどれでもMFCは使用可能でしょうか? 特に私は今学生ですのでアカデミック版ではどうでしょうか?

  • 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マシンで動作させる方法をご教示頂きたく、お願いいたします。

  • 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引用ここまで よろしくお願いします。

  • vc++6.0にてdllとlibraryを作成する方法

    vc++6.0にてdllとlibraryを作成する方法 を知りたいのですが、dllとlibraryを それぞれ新規プロジェクトで立ち上げれば 作成できるのですが、dllを作成した際に libraryも作成(自動)されるようなことは できないのでしょうか?

専門家に質問してみよう