我在 Cygwin 目标上为 x86-64 Linux 构建了一个工具链主机,现在我的项目涉及 wxWidgets、跨平台 GUI 库。它在涉及来自本机 Linux的 wxWidgets 库之前工作。
我在 Debian 上构建了 wxWidgets,然后将生成的库文件复制到 cygwin 环境中,我的项目通过了编译、链接和二进制文件在 Linux 上是可执行的,但似乎链接到了 wxWidgets 库中的错误函数。
- [正确] wxApp::Initialize() --> wxAppBase::Initialize() --> wxAppBase::OnInitGui()
- [错误] wxApp::Initialize() --> wxAppBase::Initialize() --> wxAppBase::SafeYieldFor()
``` bool wxAppBase::Initialize(int& argcOrig, wxChar **argvOrig) { .....
if ( !wxAppConsole::Initialize(argcOrig, argvOrig) )
return false;
wxInitializeStockLists();
wxBitmap::InitStandardHandlers();
// for compatibility call the old initialization function too
if ( !OnInitGui() )
return false;
return true;
} ```
有谁知道为什么?或者我不能直接从 Linux 复制库,必须通过我的工具链在 Cygwin 上构建 wxWidgets?
另一个疑问是,在原生 Linux 上构建和在 Cygwin 上构建的库有什么不同?我认为它们都为 x86-64 Linux 的相同目标平台生成。