我有一个非托管C ++项目,当链接库(Properties-> Linker-> Input-> Additional Dependencies)按特定顺序列出但在我更改库的顺序时运行正常时会产生运行时错误。我理解为什么订单可能导致链接错误(Why does the order in which libraries are linked sometimes cause errors in GCC?),但它怎么可能导致运行时错误?我在VS2005,2008和2010年观察到了这一点。
答案 0 :(得分:1)
什么样的运行时错误?你没说,所以我们不得不猜。
这是运行时错误可能发生的一种方式:如果两个不相关的库公开了碰巧具有相同名称的不同函数,则链接器将选择它找到的第一个实现。
如果您打算从draw()
拨打paint.lib
,但gunfight.lib
在链接器列表中较早,那么您将调用错误的draw()
并产生不可预测的后果。