• ベストアンサー

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 が未解決です。 関数の定義がしていないと言うことでしょうか?実際に、定義してみたりしました(定義する場所が違うのかもしれません)が、解決できませんでした。 よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

>print_identity関数は、自作関数です。 であれば、 void print_identity(void){;} を void print_identity(unsigned char *clue){ /* この関数での処理 */ } に置き換えて下さい。

bird_2005
質問者

お礼

解決しました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>どういう意味なんでしょうか? 関数の定義そのものなので、 ; の部分には、その関数で行う実際の処理を書き連ねていかないといけません。 void print_identity(void); の場合は、プロトタイプ宣言で、どこかに実際に処理をともなう関数の定義がなければいけません。 もし、その関数が外部のライブラリに含まれていて、 中身を定義する必要が無くて本来プロトタイプ宣言だけでいいということなら、 #include指定やlibの指定あるいはリンクに含めるファイルのリストを見直しましょう。 ところで >print_identity関数を追加したところ、 print_identity関数ってなんなんですか? 自作関数ではないのですか?

bird_2005
質問者

補足

print_identity関数は、自作関数です。 以下のfor文の中に、print_identity関数を記述するつもりです。print_identity関数は、引数にunsigned char型の配列を持ちます。 for(i=0;i<10;i++){   print_identity(6バイトのunsigned charの配列)   print_identity(6バイトのunsigned charの配列) }

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

(コンパイルではなく)リンクで落ちていますから、print_identity() を含むファイルを一緒に処理するのを忘れている(プロジェクトに該当ファイルが追加されていない)というのが、ありそうだなという気がします。 もちろん、print_identy() の実体がないという可能性もあります。

全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

参照する前に定義がされていないということだと思います。 void print_identity(void){;} のように定義されているでしょうか 多分、voidが省略されて書かれているのではないですか

bird_2005
質問者

補足

こんばんは。 void print_identity(void){;}を以下のところに追加の様に追加したところコンパイル可能となりました。しかし、実際のところ、定義が出来ただけできちんと動作しているのかわかりませんが・・・ void *send_packet(void* context); void print_identity(byte* clue){;} void main(int argc, char** argv){ } void *sender(void* context){  for(i=0;i<10;i++){   print_identity(6バイトのunsigned charの配列)   print_identity(6バイトのunsigned charの配列)  } } ところで、このvoid print_identity(void){;}の{;}は、どういう意味なんでしょうか?中括弧をはずしてセミコロンだけでコンパイルするとエラーが表示されますが、{;}とするとコンパイル成功します。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 外部シンボル未解決 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設定しています 何か設定などたりないのでしょうか? よろしくお願いします。

  • 外部シンボル未解決 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設定しています 何か設定などたりないのでしょうか? よろしくお願いします。

  • エラー 未解決の外部シンボル

    プログラム初心者です。 以下のエラーが出て解決方法がわからず困っております。ご存知の方宜しくお願いします。 エラー 1 error LNK2019: 未解決の外部シンボル __imp__ntohs@4 が関数 "void __cdecl packet_print(unsigned char *,struct pcap_pkthdr const *,unsigned char const *)" (?packet_print@@YAXPAEPBUpcap_pkthdr@@PBE@Z) で参照されました。 main.obj エラー 2 fatal error LNK1120: 外部参照 1 が未解決です。 C:\Documents and Settings\谷本\My Documents\Visual Studio 2005\Projects\Packetmoni_Base\Debug\Packetmoni_Base.exe

  • 未解決の外部シンボル

    ソースはvc++2005からVC++.net2003に各ソースをコピペしてビルドしてみたら EmptyProject.obj : error LNK2019: 未解決の外部シンボル "struct IDirect3D9 * __cdecl DXUTGetD3DObject(void)" (?DXUTGetD3DObject@@YAPAUIDirect3D9@@XZ) が関数 "bool __stdcall IsDeviceAcceptable(struct _D3DCAPS9 *,enum _D3DFORMAT,enum _D3DFORMAT,bool,void *)" (?IsDeviceAcceptable@@YG_NPAU_D3DCAPS9@@W4_D3DFORMAT@@1_NPAX@Z) で参照されました。 EmptyProject.obj : error LNK2019: 未解決の外部シンボル "int __cdecl DXUTGetExitCode(void)" (?DXUTGetExitCode@@YAHXZ) が関数 _WinMain@16 で参照されました。     ・     ・      ・  というエラーがでました。どうしたら通りますでしょうか?

  • 未解決の外部シンボル

    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外部シンボルが未解決がでてしまいます。

    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++です。

  • C++で、外部シンボル・外部参照が未解決

    どんな簡単な間違っていないようなプログラムをビルドしても、同じエラーメッセージが現れてきます。 これは、もしかしてインストールの仕方がまずかったのでしょうか? LIBCD.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です Debug/hello.exe : fatal error LNK1120: 外部参照 1 が未解決です。 link.exe の実行エラー hello.exe - エラー 2、警告 0

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

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

  • 外部シンボルの未解決のエラー

     今日ずっとタイトルのエラーの解決を探してたんですが,なかなかうまくいきません.助けていただきたいです.よろしくお願いします.   VC++2008を使ってます.エラーは, ――――― エラー 2 error LNK2001: 外部シンボル ""public: void __thiscall Sequence::Game::Parent::SetSeqID(enum Sequence::Game::Parent::Seq)" (?SetSeqID@Parent@Game@Sequence@@QAEXW4Seq@123@@Z)" は未解決です。 Load.obj ――――― エラー 9 error LNK2019: 未解決の外部シンボル "public: __thiscall Sequence::Game::Parent::Parent(int)" (??0Parent@Game@Sequence@@QAE@H@Z) が関数 "public: void __thiscall Sequence::Parent::Update(void)" (?Update@Parent@Sequence@@QAEXXZ) で参照されました。 Parent.obj という類の2種類のエラーが全部で10個ほどと「外部参照○が未解決です」というものです. Parent.cppというものは  Sequence/Parent.cpp Sequence/Game/Parent.cpp と2種類あります.  ちゃんとSequence/Game/Parent.cppにこのヘッダで宣言したものの定義をかいているんですが, このcppのソースを全部消したり,エラーになるようなことを書いてビルドしても 同じエラーが同じだけでてしまうので, 恐らく,このソースをうまく一緒にコンパイルできてないのだと思います というところまで 今日調べてわかりました. ちゃんとプロジェクトの中には入ってますし,フォルダ構成も間違ってないと思うんですが,リビルトしてみると Parent.cpp が一回しかコンパイルされてません. このエラーの一歩前の段階は Sequence/Parent.cpp に関しての外部シンボルの未解決エラーでした.  解決策をいただきたいです.よろしくお願いします.