在我的共享库foo中,我按如下方式链接静态库栏:
foo_la_LIBADD = /path/to/bar.lib
链接时,我得到以下内容:
*** Warning: Trying to link with static lib archive /path/to/bar.lib.
*** I have the capability to make that library automatically link in when
*** you link to this library. But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because the file extensions .lib of this argument makes me believe
*** that it is just a static archive that I should not use here.
并且链接失败。
bar.lib实际上是一个中级便利档案,但它不是由automake生成的。
我可以通过手工生成bar.lib的bar.la包装器
来解决这个问题old_library='bar.lib'
shouldnotlink=no
但这似乎是一个令人毛骨悚然的黑客,我宁愿避免。有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
如果您的库依赖于其他库,请不要使用libtool链接Windows上的共享库。如果这样做,至少应该为不是由autotools生成的任何库创建.la包装器。
相反,您可以直接使用cl.exe或link.exe为Windows创建和维护自定义链接规则。您可以在Makefile.am中有条件地指定此类规则,它们将覆盖默认的libtool规则。这比用libtool打架要麻烦得多。