< ADOでOracleのバインド変数つきPL/SQLを実行する | (周)年は-4713と+9999の間で指定しなければなりませんが、0であってはなりません。 >

November 30, 2003

外部シンボル "_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?

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?