1

Visual Studio 2010 で wxWidgets をコンパイルすると、このリンカー エラーが発生します。

msvcrt.lib(wcrtexew.obj) : error LNK2001: unresolved external symbol _wWinMain@16

ここで問題です。wxWidgets のエントリ ポイントは次のマクロです。

IMPLEMENT_APP(MyApp)

つまり、wWinMain() をエントリとして使用しません。

コンパイル時にエントリ ポイントを無効にしようとしましたが (/NOENTRY)、ダイスはありません。wWinMain() を定義すると、エントリが IMPLEMENT_APP であるため wxWidgets が開始されないため、何も機能しないようです。

このエラーは、静的としてコンパイルした場合にのみ発生します。静的としてコンパイルしない場合は、Windows Server 2008 の msvcp100d.dll と msvcr100d.dll という DLL を提供する必要があります (ライブラリがインストールされていない古いバージョンの Windows では、さらに多くの DLL が必要になる場合があります)。

これで、デバッグ ライブラリを再度リンクしていることはわかりましたが、リリースを再度リンクしても問題はありません。同じエラー (未解決の外部シンボル _wWinMain@16) が発生するはずだからです。

解決策はありますか?

4

4 に答える 4

1

静的ライブラリにリンクするときは、ライブラリがアプリケーション コードのビルドに使用したものとまったく同じパラメータでビルドされていることを確認する必要があります。

そのため、ライブラリ ビルドとアプリケーション ビルドのすべてのコンパイラ オプションを調べて、それらが一致していることを確認します。また、アプリケーションのビルドが、一致した構成を使用してビルドされた静的ライブラリにリンクしていることを確認してください。

痛いです!この問題に対処するか、ターゲット マシンに正しい DLL をインストールする問題に対処するかを決定する必要があります。いずれにせよ、構成管理の問題を解決する必要があります。

あなたの特定の問題では、リンカが _wWinMain@16 を探していることがわかります。これは、Unicode をオンにしてアプリケーション コードをビルドしたが、Unicode 以外の静的ライブラリにリンクしていることを示唆しています。

于 2012-05-25T17:08:50.680 に答える
0

まず、プロジェクトと同じ設定でwxWidgetsのライブラリ(wxWidgets \ build \ msw)をコンパイルします。そこで、「/ MT」、「静的ライブラリでMFCを使用」を有効にし、プロジェクトを「リリース」として出力します。私がコーディングしたwxWidgetsのアプリケーションとまったく同じ設定。

今コメントアウト:

IMPLEMENT_APP(MyApp)

そして、これをエントリポイントに使用します。

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPWSTR lpCmdLine, int nShowCmd)
{
    char *buf;

    buf = new char[wcslen(lpCmdLine) + 1];

    wcstombs(buf, lpCmdLine, wcslen(lpCmdLine) +1);

    wxApp::SetInstance( new MyApp());

    wxEntry(hInstance, prevInstance, buf, nShowCmd);

    wxEntryCleanup();
}
于 2012-05-26T02:45:32.547 に答える
0

プロジェクトの文字セットをユニコードに変更した後、同じ問題が発生しました。私のプロジェクトでは、マルチスレッド デバッグ DLL ( /MDd) を使用しています。上記の回避策も私にとってはうまくいきましたが、実際に問題の原因を突き止めて使用したかったのIMPLEMENT_APPです。

「MFC の使用」を「標準 Windows ライブラリの使用」に変更した後、プロジェクトを正常にビルドできました。

于 2014-10-13T10:26:18.570 に答える
0

ありますか

IMPLEMENT_APP(MyApp)

.cpp ファイルで?これは通常、添付ファイルのどこにIMPLEMENT_APP(MyApp)あるかにあります。

私は wxWidgets を静的ライブラリとして使用しており、それをコンパイルしています。

于 2012-05-25T16:37:15.730 に答える