Cygwin涉及来自原生Linux的wxWidgets库



我在x86-64 Linux的Cygwin目标上构建了一个工具链主机,现在我的项目涉及wxWidgets,跨平台GUI库。它在涉及来自本机Linux的wxWidgets库之前工作。

我在 Debian 上构建了 wxWidgets,然后将生成的库文件复制到 cygwin 环境中,我的项目通过编译、链接和二进制文件在 Linux 上是可执行的,但它似乎链接到 wxWidgets 库中的错误函数。

    [Correct] wxApp::Initialize() --> wxAppBase::Initialize() -
  1. -> wxAppBase::OnInitGui()
  2. [Wrong] wxApp::Initialize() --> wxAppBase::Initialize() -
  3. -> 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 的相同目标平台生成。

我不确定你使用的是哪个版本的编译器,但通常 Debian 包括 MinGW-w64 交叉编译器,它也可以在本机和 Cygwin 下使用。我的理解是 Debian 交叉编译器应该与原生编译器兼容,但如果它与 Cygwin 兼容,我会感到惊讶。

无论如何,从 Debian 交叉编译所有内容或在 Cygwin 下编译所有内容似乎要简单得多。

相关内容

  • 没有找到相关文章

最新更新