【发布时间】:2011-08-19 13:13:20
【问题描述】:
我正在尝试用 c++ 编写一个跨平台程序,该程序将在运行时加载某些模块(共享库)。为此,我使用来自Poco C++ Libraries 的ClassLoader。我使用 autoconf、automake 和 libtool 编写了一个编译链。这在 Linux 环境中应该没有问题,但是在 Windows 中会出现问题。我在编译时使用了 MinGW 和 MSYS,以便能够使用我的 Makefile。 ClassLoader 使用 Windows 特定的 LoadLibrary() 函数来加载模块,这意味着我必须将它们编译为 DLL。
我编译到库中的类继承了主应用程序中的另一个类。然后,当我尝试运行 make 时,它会抱怨很多未定义的引用并拒绝构建共享库。我想这是因为名字修饰。还是因为我不能继承库之外的类? (该类不包含在库的源代码中,但找到了头文件)
我不太确定我坚持在 MinGW + MSYS 下编译但仍然使用 LoadLibrary() 会带来多少麻烦。有这方面经验的吗?
【问题讨论】:
-
我已经使用
LoadLibrary和使用 MinGW/libtool 构建的 DLL 没有太多麻烦。我认为您的问题可能与 C++/DLL 混合有关。显示问题的(简短)示例代码可能很有用。 -
谢谢。事实证明,MinGW + LoadLibrary 的组合不是问题,而是它是如何链接的。我已将所有通用类放在一个共享库中,并将其链接到可执行文件和模块。
标签: dll mingw loadlibrary libtool poco-libraries