外部シンボル "_main" は未解決です
ATL COM AppWizard でActiveX DLLを作成して、DebugでビルドしてVBで作ったチョンプロからコールしてOK、よし、Releaseビルドだ!と、アクティブな構成の設定で「Win32 Release MinDependency」を選択してビルドするとこんなエラーがでました。
LIBCMT.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です ReleaseMinDependency/PrivateProfiles.dll : fatal error LNK1120: 外部参照 1 が未解決です。 link.exe の実行エラー PrivateProfiles.dll - エラー 2、警告 0
Debugビルドでは通っていたので、なにかビルドの設定だろうとは思うのですが、よく分かりません。こういうときは、同じようなエラーの情報がないか、検索してみるに限ります。basp21のBabaさんのサイトにそのものズバリの情報がありました。以下はCOM プログラミング2[Baba Centerfolds]からの引用。
このエラーは、Cランタイム関数がリンクされていないときに発生します。
Cのランタイム関数をプロジェクト内で使っていると発生します。
ReleaseビルドのデフォルトではATL COM AppWizardは、Cランタイムをリンクしません。
これは、_ATL_MIN_CRTプリプロセッサ文字が指定されているためです。
対策としては:
●[プロジェクトの設定] -[C/C++]-[プリプロセッサの定義]で_ATL_MIN_CRTを削除
こうするとCのランタイムがリンクされてエラーが消えます。
ふむふむ。確かに、LocalFree関数を使っていました。早速プリプロセッサの定義を直し、解決しました。
トラックバック
- このエントリーにトラックバック:
- http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/124
コメント
osiete
osiete
nanio?