具有默认功能的Windows静态库

时间:2011-02-23 22:22:01

标签: windows linker static-libraries

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

例如,假设我有foobar.lib,其定义为:

FOO
BAR

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

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

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

1 个答案:

答案 0 :(得分:2)

我想出了一个解决方案(不确定它是唯一的还是最好的解决方案)。

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

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