具有默认功能的Windows静态库

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

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

FOO
BAR

我有一些其他程序只定义FOO,并将内置到必须导出FOO和BAR的DLL中.我希望能够使用foobar.lib在生成的DLL中自动导出BAR的默认定义(并忽略foobar.lib中FOO的定义).

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

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

最佳答案 我找到了一个解决方案(不确定它是唯一的还是最好的解决方案).

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

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

点赞