0

AquaMain.cpp というファイルがあります

#include "AquaGame.h"

using namespace Aqua;

#ifdef _WIN32

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
     AquaGame::get()->init();

     return AquaGame::get()->run();
}

#endif

このファイルは静的ライブラリ内にあります。

この静的ライブラリを使用するプロジェクトをコンパイルしようとすると、ビルドがこのエラーで失敗します

1>MSVCRTD.lib(crtexew.obj): エラー LNK2019:関数で参照されている未解決の外部シンボル WinMain@16 _ _tmainCRTStartup

ファイル AquaMain.cpp がコンパイルされていません。理由はわかりません...

WinMain 関数を実行可能プロジェクトに移動すると、関数はコンパイルされ、すべてが機能しますが、WinMain を静的ライブラリに入れたいと思います。

何か案は?

4

2 に答える 2

1

WinMainを次のように宣言する必要がありますextern "C"

extern "C" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
     AquaGame::get()->init();

     return AquaGame::get()->run();
}
于 2013-01-30T17:10:17.983 に答える
0

AquaMain.cpp には拡張子 .cpp がありましたが、AquaMain.cpp プロパティ ページの「アイテム タイプ」フィールドが C/C++ ヘッダーに設定されていたため、Visual Studio 2012 はそれをヘッダーとして使用しています。

フィールドを C/C++ コンパイラに変更すると、エラーが修正されました。

于 2013-01-30T17:23:38.843 に答える