微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有默认function的Windows静态库

我想在Windows中创build一个静态库(.lib),可以在后续版本中用作未定义函数的“备份”。

例如,假设我有foobar.lib,它定义了:

FOO BAR

而且我还有一些其他的程序只定义了FOO并且被构build到一个必须导出FOO和BAR的DLL中。 我希望能够使用foobar.lib自动导出在生成的DLL中的BAR的认定义(并忽略foobar.lib中的FOO的定义)。

我已经尝试发送foobar.lib链接器,但我得到了一个多重定义的符号错误(/ FORCE应该覆盖,但强烈的警告,它可能不会按预期工作)。 我也尝试使用/NODEFAULTLIB:foobar.lib,但它完全忽略了库,并说BAR是未定义的。

为什么我没有从g ++得到“多重定义”的错误

与旧版本的libstdc ++链接

编译的C ++程序提出“不能打开共享目标文件”在另一个系统上,尽pipe该文件存在

C:dynamic链接到OpenSSL库时出错

针对Windows上的Linux进行交叉编译(链接输出文件不会在Linux上以可执行文件的forms运行,并且具有未定义的符号)

我几乎100%肯定有一种方法可以做到这一点,因为我使用一个应用程序(Abaqus)来允许用户编写插件,而不必为插件DLL定义所有必需的导出。 而且他们不使用/ FORCE选项。

如何避免多重定义链接错误

防止从静态库中导入function

在Eclipse CDT中不能指定多个rpath

如何确定EXE(或DLL)是否参与ASLR,即可重定位?

如何控制Windows DLL从应用程序导入哪些符号?

我想出了一个解决方案(不知道这是唯一的或最好的解决方案)。

我试图使用一个目标文件(foobar.obj)在foobar.lib中定义FOO和BAR 。 如果我把它分成foo.obj和bar.obj,然后使用它们来创建foobar.lib,链接器可以有效地忽略相应的.obj文件

所以简短的答案是:静态库的每个目标文件一个函数

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐