我需要將靜態庫鏈接到給定的對象文件。我沒有該文件的源代碼,也沒有任何影響。Visual Studio 2015鏈接錯誤LNK2005
使用Visual Studio 2010時,我可以創建一個庫並將其與給定文件進行鏈接。
在不同的機器上我只有VS 2015年當我建立我的C代碼鏈接到指定的lib我得到以下錯誤:
LIBCMT.lib(vfprintf.obj) : error LNK2005: __vfprintf_l already defined in c_fun.obj
LIBCMT.lib(printf.obj) : error LNK2005: _printf already defined in c_fun.obj
對於我用下面的簡化代碼的測試目的:
#include <stdio.h>
void c_fun(double C_IN, double *C_OUT)
{
*C_OUT = C_IN * 2.0;
printf("Hallo C!\n");
}
當我讚揚的printf行了,然後我就可以成功鏈接與VS2015創建的lib,但我需要爲可視化目的printf語句。
編譯我的lib我在命令行上使用相同的參數。是否有編譯器或鏈接器選項來生成VS 2010兼容庫?
當我使用DUMPBIN /所有兩個庫,我得到以下的輸出:
庫用VS2010創建:
2 public symbols
BC _F_FUN
310 _c_fun
庫用VS2015創建: 7公共符號
1DE _F_FUN
432 [email protected][email protected]@[email protected]
432 ___local_stdio_printf_options
432 [email protected]
432 __vfprintf_l
432 _c_fun
432 _printf
我期望在兩個版本中都能得到相同的符號。
我使用的編譯器選項兩次「/ MT/W3/EHSC/C」