ページ 11

未解決の外部シンボルについて

Posted: 2011年11月29日(火) 10:34
by syu
1>------ ビルド開始: プロジェクト: gameengine project, 構成: Debug Win32 ------
1>リンクしています...
1>main.obj : error LNK2019: 未解決の外部シンボル "void __cdecl TrnsBlt(struct HDC__ *,struct HDC__ *,int,int,int,int,int,int)" (?TrnsBlt@@YAXPAUHDC__@@0HHHHHH@Z) が関数 "unsigned long __stdcall ThreadFunc(void *)" (?ThreadFunc@@YGKPAX@Z) で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル "void __cdecl BBlt(struct HDC__ *,struct HDC__ *,int,int,int,int,int,int)" (?BBlt@@YAXPAUHDC__@@0HHHHHH@Z) が関数 "unsigned long __stdcall ThreadFunc(void *)" (?ThreadFunc@@YGKPAX@Z) で参照されました。
1>C:\Users\Owner\Desktop\課題\gameengine project\Debug\gameengine project.exe : fatal error LNK1120: 外部参照 2 が未解決です。
1>ビルドログは "file://c:\Users\Owner\Desktop\課題\gameengine project\gameengine project\Debug\BuildLog.htm" に保存されました。
1>gameengine project - エラー 3、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========



というコンパイルエラーが出て原因が解らず困っています。
解決方法を教えてください。
環境は、visualstudio2008 でOSはWindows7(64bit)です。

同じ質問をこちらにも掲載しています。
http://social.msdn.microsoft.com/Forums ... 053425e579

Re: 未解決の外部シンボルについて

Posted: 2011年11月29日(火) 11:06
by softya(ソフト屋)
これはコンパイルエラーではなリンクエラーです。

TrnsBltやBBltは内部の関数ではなく外部のライブラリだと思いますが、ちゃんとライブラリのリンクの指定はされていますか?

Re: 未解決の外部シンボルについて

Posted: 2011年11月29日(火) 11:26
by syu
以下がヘッターファイルになります。

#include"windows.h"
//プロトタイプ宣言
bool LoadBMP(HBITMAP*, LPCTSTR); //画像読込み
void TrnsBlt(HDC,HDC,int ,int,int,int,int,int);//透過表示
void BBlt(HDC,HDC,int,int,int,int,int,int); //画像表示
bool HitCheck(int,int,int,int,int,int); //衝突判定

上記のように .hファイルにあります。

Re: 未解決の外部シンボルについて

Posted: 2011年11月29日(火) 11:28
by softya(ソフト屋)
ヘッダファイルに書いただけではリンクされません。
ライブラリの実体であるxxx.libファイルをオプションで指定する必要があります。

Re: 未解決の外部シンボルについて

Posted: 2011年11月29日(火) 11:32
by syu
プロジェクト>※※のプロパティ>構成プロパティ>リンカ>コマンドライン>追加オプションに「msimg32.lib winmm.lib」のライブラリを入れました。

Re: 未解決の外部シンボルについて

Posted: 2011年11月29日(火) 12:16
by softya(ソフト屋)
これらの関数は、msimg32.lib winmm.libには含まれていないと思います。
bool LoadBMP(HBITMAP*, LPCTSTR); //画像読込み
void TrnsBlt(HDC,HDC,int ,int,int,int,int,int);//透過表示
void BBlt(HDC,HDC,int,int,int,int,int,int); //画像表示
bool HitCheck(int,int,int,int,int,int); //衝突判定

これらの関数の実体は何処のライブラリや何処のソースコードにあるのでしょうか?