VisualStudio2012 外部依存関係

このQ&Aのポイント
  • VisualStudioExpress2012を使ってC言語のコードを書いていますが、外部依存関係のエラーが発生します。
  • プロジェクトBから呼び出している関数check()が未解決の外部シンボルとなってしまいます。
  • 不足情報や設定の見落としによるエラーか分かる方がいらっしゃいましたら、ご教授願います。
回答を見る
  • ベストアンサー

VisualStudio2012 外部依存関係

現在、VisualStudioExpress2012を使ってC言語のコードを書いています。 1つのソリューション内に、機能コードを書いてあるプロジェクトAと、 上記機能コードをテストするためのテストコードを記述したプロジェクトBとが ある状態にしたいと考えております。 しかし、プロジェクトBをスタートアッププロジェクトにし、プロジェクトAを外部参照に 割り当てても、コンパイル時にプロジェクトBから呼び出すプロジェクトAの関数check()が、 エラー 1 error LNK2019: 未解決の外部シンボル _check が関数 _main で参照されました。 というエラーになってしまう状況です。 プロジェクトBから呼び出している、関数check()の定義をvisual studio上の機能を用いてジャンプさせると、確かにプロジェクトAにて定義しているコードまでたどり着いており、なぜ「未解決」となってしまうのかが判断できないです。 見落としている点、設定など分かる方がいらっしゃいましたら、ご教授願います。 また、不足情報などございましたら、ご指摘いただければ幸いです。 以上

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

  • ベストアンサー
  • plt_
  • ベストアンサー率59% (16/27)
回答No.1

プロジェクトAは、単独で.exeファイルを出力するようになってるのでしょうか? プロジェクトBにも該当ファイルを追加しましょう。 外部依存だと、#includeされているヘッダーはともかく、 .cや.cppはコンパイル対象になりません。 結果、リンカーがコンパイルされたバイナリを見つけられないという事に。 または、プロジェクトAがライブラリプロジェクトなのであれば、 プロジェクトBのプロパティ→リンカー→入力→追加の依存ファイル に該当ファイルの出力パスを追加してあげればOKです。

ghatake
質問者

お礼

プロジェクトAは、ライブラリプロジェクトではありません。 そのご指摘で、何故うまくいかないのかがよく分かりました。 現在の構築状況ではうまくいくわけがなかったのですね。 「参照する」ということの意味を根本的に取り違えていたように思います。 納得がいきました。ありがとうございました。

関連するQ&A

  • 外部シンボル" ~~"は未解決ですというエラーが直らない

    VisualStdio2005で空のプロジェクトからコンソールアプリケーションを作成しています。 以下の三つのエラーが解決できなくて悩んでいます。 : error LNK2001: 外部シンボル "_name" は未解決です。 : error LNK2001: 外部シンボル "_teki" は未解決です。 : fatal error LNK1120: 外部参照 2 が未解決です。 nameとtekiはchar型の変数として宣言しています。 このエラーはどのようにいじれば解決するのでしょうか。 助けてください。

  • VisualStudio2005

    お世話になります。 例えば、同一ソリューション内で2つのプロジェクトがあったとします。どちらにも複数のソースファイルがあります。 このとき一つ目のプロジェクトAのとあるクラスaを、プロジェクトBから参照したいとします。 現在この状況でクラスaの書かれているソースファイルをコピーしプロジェクトBに挿入しているのですが、これでは管理が面倒ですし、スマートではないです。 きっとうまい方法でプロジェクトAのクラスaをプロジェクトBから参照する方法があるのだと思っています。 知っている方よろしくお願いします。

  • 「外部シンボル "_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を見ると、「コンパイルすればいい」としか書いてないのですが、、、 もし原因がわかったらお願いします。

  • LNK2019:未解決の外部シンボル と LNK1120:外部参照 1 が未解決について

    長いタイトルになってしまいすみません。 私は、Visual C++.NETを使用して、C言語プログラミングをしています。あるサンプルプログラムを参考にしながら改良を図っているのですが、以下に示すプログラムを追加したところ、タイトルに示しましたエラーが表示されて困っています。 //長くなり見づらいため、問題の箇所のみ記します。 void main(int argc, char** argv){ } void *sender(void* context){ for(i=0;i<10;i++){ print_identity() print_identity() } } for文の中に、print_identity関数を追加したところ、 エラーが発生しました。 [エラー内容] 1. sample error LNK2019: 未解決の外部シンボル _print_identity が関数 _senderで参照されました。 2. sample fatal error LNK1120: 外部参照 1 が未解決です。 関数の定義がしていないと言うことでしょうか?実際に、定義してみたりしました(定義する場所が違うのかもしれません)が、解決できませんでした。 よろしくお願いします。

  • このエラーは??

    コンパイラーすると次のようなエラーがでました。 a.obj : error LNK2019: 未解決の外部シンボル _printfが関数_mainで参照されました。 a.exe : fatal error LNK1120: 外部参照1が未解決です。 このエラーはなんでしょうか??よろしくお願いします。

  • 未解決の外部シンボル

    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を指定しています。 独学で勉強しているんですが、このエラーの原因がまったく分かりません。 どなたかよろしくお願いします。

  • VC++2005EEでビルドできない

    VC++ 2005 ExpressEditionをインストールし、 マイクロソフトのヘルプに書いてある手順通りに 設定を行ったのですがビルド時に以下の エラーメッセージが表示されます。 エラーメッセージの一部 test2.obj : error LNK2019: 未解決の外部シンボル __imp__DispatchMessageW@4 が関数 _wWinMain@16 で参照されました。 test2.obj : error LNK2019: 未解決の外部シンボル __imp__TranslateMessage@4 が関数 _wWinMain@16 で参照されました。 test2.obj : error LNK2019: 未解決の外部シンボル __imp__TranslateAcceleratorW@12 が関数 _wWinMain@16 で参照されました。 test2.obj : error LNK2019: 未解決の外部シンボル __imp__GetMessageW@16 が関数 _wWinMain@16 で参照されました。 このようなエラーが計20発生してしまいます。 ちなみに作成しようとしたプログラムは単に ウインドウを表示するだけのもので、名前はtest2です。 どなたか対処法をご存知の方がいらっしゃいましたら ご教授願います 参照URL:http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

  • Visual C++ 2005 Express EditionでLINK2019エラー

    Visual C++ 2003.netからVisual C++ 2005 Express Editionに移行した際に、以前書いたプログラムがリンクエラーで動かなくなってしまいました。 追加するLibディレクトリが足りないのかと思ったのですが、何が足りないのか見つけることができませんでした。 解決法を教えていただけないでしょうか。 OSはWindows XPです。 よろしくお願いします。 エラーメッセージの内容↓ ------------------------------- error LNK2019: 未解決の外部シンボル __imp__GetWindowPlacement@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__DispatchMessageA@4 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__TranslateMessage@4 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__PeekMessageA@20 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__ValidateRect@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__ShowWindow@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__SetWindowPos@28 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__GetWindowRect@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__GetClientRect@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__CreateWindowExA@48 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__GetSystemMetrics@4 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__RegisterClassExA@4 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__LoadCursorA@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__DefWindowProcA@16 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 error LNK2019: 未解決の外部シンボル __imp__PostQuitMessage@4 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 現在追加されているLibディレクトリ↓ ------------------------------------------- $(VCInstallDir)lib $(VCInstallDir)PlatformSDK\lib $(FrameworkSDKDir)lib $(VSInstallDir) $(VSInstallDir)lib C:\Program Files\Microsoft Platform SDK\Lib C:\Program Files\Microsoft DirectX SDK (April 2007)\Lib\x86

  • 配列の操作時にLNK2001外部シンボルが未解決がでてしまいます。

    test.hにて class test{ public: static int test[8][8]; static int test1[8]; public: static int set_test(); } を定義して test.cppで void test(){ test[0][0] = 0; test1[0] = 0; } とすると LNK1120: 外部参照 1 が未解決です。 LNK2001外部シンボルが未解決です。 となってしまいます。 環境は Visual Studio 2005 C++です。

  • プロジェクトを作った際のエラー

    VisualC++ 2005 Express Editionを使用してます win32コンソールアプリケーション - アプリケーション設定 - windowsアプリケーション この新しく作ったプロジェクトを何もいじらずにビルドすると __imp__EndPaint@8 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__BeginPaint@8 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__DefWindowProcW@16 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__DestroyWindow@4 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__DialogBoxParamW@20 が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 test.obj : error LNK2019: 未解決の外部シンボル __imp__EndDialog@8 が関数 "int __stdcall About(struct HWND__ *,unsigned int,unsigned int,long)" (?About@@YGHPAUHWND__@@IIJ@Z) で参照されました。 C:\C++test\test\Debug\test.exe : fatal error LNK1120: 外部参照 19 が未解決です。 というエラーが出てしまいます 800文字オーバーしてしまうのでエラーの前半部分を消してあります この原因と解決方法を教えてください よろしくお願いします