外部シンボル _main は未解決です

このQ&Aのポイント
  • VisualC++6.0で新規作成したプロジェクトで、DLLファイルを作成していますが、外部シンボル _main のエラーが発生しています。
  • 友人の作ったライブラリをリンクして関数を使おうとすると、エラーが出てしまいます。
  • プロジェクトの設定やエントリポイントシンボルを確認するなど、解決策を探しています。
回答を見る
  • ベストアンサー

error LNK2001: 外部シンボル "_main" は未解決です

VisualC++6.0で、新規作成→win32 Dinamic-Link Libraryでプロジェクト を作成し、dllファイルを作っています。 今までは、上手くコンパイル出来て、dllを作れていました。 友人の作ったライブラリにリンクして、ソースファイルで そのライブラリの関数を使って、コンパイルすると、 LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です。 というエラーが出て困っています。 今、プロジェクトの設定→リンク→アウトプットの エントリポイントシンボルはDllEntryPoint@12となっています。 どうしたら良いでしょうか? どなたかご教授くださると助かります。 ちなみに、ライブラリの関数をコメントにすると、コンパイル出来ます。

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

  • ベストアンサー
  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2

もう一つ、書くの忘れてました。 exeを作るプロジェクトにした時、main()関数が無くて >LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です。 が出てるんなら、main()を書かないと駄目ですよ。

muni1980
質問者

お礼

プログラムに void main(){} と付け加えると、コンパイルできました。 ありがとうございました。

その他の回答 (1)

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

DLL(ライブラリ)を作ってるプロジェクトだと、main()関数があるとまずいのです。 ライブラリにmain()が有ると、それが実行されてしまいますよね? 解決方法は、exe作るようなプロジェクトに変更するか?ライブラリにするんなら、main()やWinMain()以外の関数名にするしか有りません。

関連するQ&A

  • 外部シンボル "_main"は未解決です

    「LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です」というエラーが発生しましたが、何をみればいいのかわかりません。int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )がソースについています。

  • 外部シンボル未解決 LNK2001

    外部シンボル未解決 LNK2001 今windowsXP32bitからwindowsXP64bitPCでのデバッグを行おうとしています。 開発環境VC++2005です。 しかし、32bitPCでは、エラーなどなかったのですが64bitPCだと次のようなエラーが発生しました。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DP8SP_TCPIP" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlayVoiceClient" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlayVoiceClient" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "PIN_CATEGORY_PREVIEW" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IBasicVideo" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_VideoInputDeviceCategory" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_SystemDeviceEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_ICreateDevEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IMediaControl" は未解決です。 とエラーがでています。 一応構成マネージャーの設定は、64x設定しています 何か設定などたりないのでしょうか? よろしくお願いします。

  • 外部シンボル未解決 LNK2001

    外部シンボル未解決 LNK2001 外部シンボル未解決 LNK2001 今windowsXP32bitからwindowsXP64bitPCでのデバッグを行おうとしています。 開発環境VC++2005です。 しかし、32bitPCでは、エラーなどなかったのですが64bitPCだと次のようなエラーが発生しました。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DP8SP_TCPIP" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlayVoiceClient" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlayVoiceClient" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "PIN_CATEGORY_PREVIEW" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IBasicVideo" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_VideoInputDeviceCategory" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_SystemDeviceEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_ICreateDevEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IMediaControl" は未解決です。 とエラーがでています。 一応構成マネージャーの設定は、64x設定しています 何か設定などたりないのでしょうか? よろしくお願いします。

  • 外部シンボルについて

    リンク中... session.obj : error LNK2001: 外部シンボル "_bcopy" は未解決です session.obj : error LNK2001: 外部シンボル "_bzero" は未解決です Debug/session.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー VC++を使用しましてビルドとコンパイルをしますと上記のようなエラーがでます。ライブラリのリンク不足なのでしょうか?どのファイルを使用すればいいかわかりません。宜しくお願いします。

  • 外部シンボル未解決 LNK2001

    外部シンボル未解決 LNK2001 今windowsXP32bitからwindowsXP64bitPCでのデバッグを行おうとしています。 開発環境VC++2005です。 しかし、32bitPCでは、エラーなどなかったのですが64bitPCだと次のようなエラーが発生しました。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DP8SP_TCPIP" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlayVoiceClient" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlayVoiceClient" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "PIN_CATEGORY_PREVIEW" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IBasicVideo" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_VideoInputDeviceCategory" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_SystemDeviceEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_ICreateDevEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IMediaControl" は未解決です。 とエラーがでています。 一応構成マネージャーの設定は、64x設定しています 何か設定などたりないのでしょうか? よろしくお願いします。

  • 「外部シンボル "_DirectDrawCreate@12" は未解決」って???

    外国のサイトで拾ってきたVisual C++のソースコードをコンパイルしたら 次のようなエラーが出ました。 --------------------------------- (1) test.obj : error LNK2001: 外部シンボル "_DirectDrawCreate@12" は未解決です (2) nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__endthreadex" は未解決です (3) nafxcwd.lib(thrdcore.obj) : error LNK2001: 外部シンボル "__beginthreadex" は未解決です (4) Debug/prog.exe : fatal error LNK1120: 外部参照 3 が未解決です。 (5) link.exe の実行エラー --------------------------------- 特に、(1)~(3) の意味がよく分かりません。 Readmeを見ると、「コンパイルすればいい」としか書いてないのですが、、、 もし原因がわかったらお願いします。

  • C++でのエラー LNK2001

    C++でプログラミング中ビルドしたところ以下のようなエラーが出ました。解決方法がわかりません。どのようにしたら解決できるのでしょうか? ---------------------------------------------------------------- コンパイル中... sample01.cpp リンク中... sample01.obj : error LNK2001: 外部シンボル "__imp__dispose_library" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_copyright_information" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_version_information" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__initialize_library" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__close_reader_writer" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_last_error_types" は未解決です Debug/Sample01.exe : fatal error LNK1120: 外部参照 6 が未解決です。 link.exe の実行エラー

  • 外部シンボル "_main" は未解決です というエラーが出ます

    初めまして、プログラミング初心者です。 VC++6.0を使っています。 Win32コンソールアプリケーションで書籍に載っていたサンプルプログラムを実行したところ、 『LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です』 『Debug/shi.exe : fatal error LNK1120: 外部参照 1 が未解決です。』 というエラーが出ます。 元々C言語のプログラムなのでmain関数が必要だということはここのログを見て分かったのですが、C++の場合はどのようにすれば良いのでしょうか? 最終的にはこのプログラムをBorland社のC++Builderで使えるようになりたいのですが… プログラムを載せたいのですが、書籍のプログラムをここに載せてもいいのでしょうか?禁止事項を読んでみたのですが、いまいちよく分からなかったので… 初歩的なところから躓いてしまい、全く進めない状況です。 大変恥ずかしいのですが、どなたかご教授願えませんでしょうか。お願いします。

  • 未解決の外部シンボル

    Microsoft DirectX SDK (August 2009)\Samples\C++\Direct3\MultiAnimationをデスクトップにコピーして実行すると動くんですが、SampleBrowserからemptyprojectをインストールして MultiAnimationと同じcppとhをプロジェクトに追加すると、 1>DXUTgui.obj : error LNK2019: 未解決の外部シンボル _D3DX10CreateEffectFromMemory@56 が関数 "public: long __thiscall CDXUTDialogResourceManager::OnD3D10CreateDevice(struct ID3D10Device *)" (?OnD3D10CreateDevice@CDXUTDialogResourceManager@@QAEJPAUID3D10Device@@@Z) で参照されました。 1>DXUTcamera.obj : error LNK2001: 外部シンボル "_D3DX10CreateEffectFromMemory@56" は未解決です。 1>DXUTgui.obj : error LNK2019: 未解決の外部シンボル _D3DX10CreateSprite@12 が関数 "public: long __thiscall CDXUTDialogResourceManager::OnD3D10ResizedSwapChain(struct ID3D10Device *,struct DXGI_SURFACE_DESC const *)" (?OnD3D10ResizedSwapChain@CDXUTDialogResourceManager@@QAEJPAUID3D10Device@@PBUDXGI_SURFACE_DESC@@@Z) で参照されました。 1>DXUTgui.obj : error LNK2019: 未解決の外部シンボル _D3DX10CreateFontW@48 が関数 "protected: long __thiscall CDXUTDialogResourceManager::CreateFont10(unsigned int)" (?CreateFont10@CDXUTDialogResourceManager@@IAEJI@Z) で参照されました。 1>DXUTgui.obj : error LNK2019: 未解決の外部シンボル _D3DX10CreateTextureFromFileW@24 が関数 "protected: long __thiscall CDXUTDialogResourceManager::CreateTexture10(unsigned int)" (?CreateTexture10@CDXUTDialogResourceManager@@IAEJI@Z) で参照されました。 1>SDKmisc.obj : error LNK2001: 外部シンボル "_D3DX10CreateTextureFromFileW@24" は未解決です。 1>DXUTgui.obj : error LNK2019: 未解決の外部シンボル _D3DX10GetImageInfoFromFileW@16 が関数 "protected: long __thiscall CDXUTDialogResourceManager::CreateTexture10(unsigned int)" (?CreateTexture10@CDXUTDialogResourceManager@@IAEJI@Z) で参照されました。 1>SDKmisc.obj : error LNK2001: 外部シンボル "_D3DX10GetImageInfoFromFileW@16" は未解決です。 1>DXUTgui.obj : error LNK2019: 未解決の外部シンボル _D3DX10CreateTextureFromResourceW@28 が関数 "protected: long __thiscall CDXUTDialogResourceManager::CreateTexture10(unsigned int)" (?CreateTexture10@CDXUTDialogResourceManager@@IAEJI@Z) で参照されました。 1>DXUTgui.obj : error LNK2019: 未解決の外部シンボル _D3DX10GetImageInfoFromResourceW@20 が関数 "protected: long __thiscall CDXUTDialogResourceManager::CreateTexture10(unsigned int)" (?CreateTexture10@CDXUTDialogResourceManager@@IAEJI@Z) で参照されました。 1>DXUTres.obj : error LNK2019: 未解決の外部シンボル _D3DX10CreateTextureFromMemory@28 が 関数 "long __stdcall DXUTCreateGUITextureFromInternalArray10(struct ID3D10Device *,struct ID3D10Texture2D * *,struct D3DX10_IMAGE_INFO *)" (?DXUTCreateGUITextureFromInternalArray10@@YGJPAUID3D10Device@@PAPAUID3D10Texture2D@@PAUD3DX10_IMAGE_INFO@@@Z) で参照されました。 1>DXUTres.obj : error LNK2019: 未解決の外部シンボル _D3DX10GetImageInfoFromMemory@20 が関数 "long __stdcall DXUTCreateGUITextureFromInternalArray10(struct ID3D10Device *,struct ID3D10Texture2D * *,struct D3DX10_IMAGE_INFO *)" (?DXUTCreateGUITextureFromInternalArray10@@YGJPAUID3D10Device@@PAPAUID3D10Texture2D@@PAUD3DX10_IMAGE_INFO@@@Z) で参照されました。 1>Debug\GRAVITY ESCAPE.exe : fatal error LNK1120: 外部参照 9 が未解決です。 とでます(長くてすみません)。 追加のインクルードディレクトリにはDXUT\Optional;DXUT\Coreを指定しています。 独学で勉強しているんですが、このエラーの原因がまったく分かりません。 どなたかよろしくお願いします。

  • LNK2001(Pro*c)

    現在、Net8でOracleのデータを参照する、Cの関数を作成しているのですが、 自分で作成したライブラリをリンクして、呼び元をコンパイルすると (Windowsの場合)LNK2001エラーが発生します。 --------------------構成: XXXX - Win32 Debug-------------------- コンパイル中... XXXX.cpp コンパイル中... XXXX.cpp リンク中... XXXX.lib(XXXX.obj) : error LNK2001: 外部シンボル "_sqlcxt" は未解決です Debug/XXXX.exe : fatal error LNK1120: 外部参照 1 が未解決です。 link.exe の実行エラー XXXX.exe - エラー 2、警告 0 -------------------------------------------------------------- となり、UNIXだと、 -------------------------------------------------------------- 未定義の               最初に参照している シンボル               ファイル sqlcxt                XXXX.o ld: 重大なエラー: シンボル参照エラー。XXXX に書き込まれる出力はあ りません。 *** Error code 1 make: Fatal error: Command failed for target `XXXX' -------------------------------------------------------------- となり、sqlcxtを認識出来ていない様です。 ちなみにsqlcxtは、.pcをプリコンパイルすると、.cに吐かれる、 SQLLIBの関数の様です。 Pro*cのライブラリをリンク出来ていないのかと思い、現在いろいろと 調べているのですが、解決できません。 上記では、情報が不足しているかもしれませんが、どなたか御教授下さい。 宜しくお願いします。