没有源码,只能建议你仔细看看msdn了 链接器工具错误 LNK2005在对象中已定义符号以修饰形式显示的给定 symbol 被多次定义。可能的原因 不慎同时与单线程库和多线程库链接。确保应用程序项目文件只包括适当的库,并且任何第三方库已适当创建了单线程或多线程版本。 在也使用 /clr 时混合静态库和动态库。 该符号为封装函数(通过用 /Gy 编译创建),包含在多个文件中,但在各编译间已改变。重新编译所有包含 symbol 的文件。 以不同的形式在不同库中的两个成员对象中定义了该符号,并且使用了这两个成员对象。 某个绝对符号被定义两次,而每次定义的值不同。 头文件声明并定义了变量。可能的解决方案有: 在 .h 中声明变量:extern BOOL MyBool;,然后在 .c 或 .cpp 文件中向它分配:BOOL MyBool = FALSE;。 将变量声明为 static。 将变量声明为 selectany。 当将 uuid.lib 与定义 GUID 的其他 .lib 文件(例如 oledb.lib 和 adsiid.lib)一起使用时。例如: oledb.lib(oledb_i.obj) : error LNK2005: _IID_ITransactionObject already defined in uuid.lib(go7.obj) 若要修复,请将 /FORCE:MULTIPLE 添加到链接器命令行选项,并确保 uuid.lib 是引用的第一个库。 有关更多信息,请参见知识库文章: Q148652,PRB: LNK2005 Errors When Link C Run-Time Libraries Are Linked Before MFC Libraries。 Q140440,FIX: Global Overloaded Delete Operator Causes LNK2005。 Q184235,PRB: LNK2005 Errors on New and Delete When Defining _ATL_MIN_CRT。 该错误之后为致命错误 LNK1169。
我定义了一个头文件encrypt.h 只要我在其他地方引用他就会出问题,原代码如下所示 #include "NonstaticTest.h" // encrypt core file #include "wkaxanenhanced.h" // encrypt core fileNonStaticTest WkDmObject;/***************************************************************************** ---- Area Descriptions for Encryption/Decryption of Code and Data ----------*****************************************************************************/// NOTE: See the manual for a description of the principles behind AXAN. // A detailed explanation of the WKBAREA structure and of all the flags // can be found in the online help file.// ========================================== // area 1: first 100 bytes of OnButtonCalc() // ==========================================#define CB_AREA_ONBUTTONCALC 50struct { WKBSELECT wkbselOnButtonCalc; WKBAREA wkbar; BYTE abGapMap[WKB_GET_MAP_SIZE(CB_AREA_ONBUTTONCALC)]; } wkbarOnButtonCalc = { { WKB_SEL_FEAL32, // algorithm to use 0, // ulCacheId filled by WKCRYPT 0, // CRC filled by WKCRYPT 12, // length of initialization data {'W','I','B','U','-','S','Y','S','T','E','M','S'} }, {// WKBAREA structure (prepared for AXAN) // (WKB_AREA_CHKCRC set by WKCRYPT) WKB_AREA_CODE|WKB_AREA_SELECT, WKB_SEL_SYMFEAL, WKB_SC_EXPDATE, // Selection Code filled by WKCRYPT 0, // CRC filled by WKCRYPT 0, // reserved wkbarOnButtonCalc.abGapMap, &(wkbarOnButtonCalc.wkbselOnButtonCalc) // none because direct encryption } };BOOL DecryptProgram(WIBUKEYDATA *pwkdata);提示错误信息如下 Encrypt.obj : error LNK2005: "struct __unnamed wkbarOnButtonCalc" (?wkbarOnButtonCalc@@3U__unnamed@@A) already defined in DialogThre.obj Encrypt.obj : error LNK2005: "class NonStaticTest WkDmObject" (?WkDmObject@@3VNonStaticTest@@A) already defined in DialogThre.obj .\Debug/diblook.exe : fatal error LNK1169: one or more multiply defined symbols found Error executing link.exe.
链接器工具错误 LNK2005在对象中已定义符号以修饰形式显示的给定 symbol 被多次定义。可能的原因 不慎同时与单线程库和多线程库链接。确保应用程序项目文件只包括适当的库,并且任何第三方库已适当创建了单线程或多线程版本。
在也使用 /clr 时混合静态库和动态库。
该符号为封装函数(通过用 /Gy 编译创建),包含在多个文件中,但在各编译间已改变。重新编译所有包含 symbol 的文件。
以不同的形式在不同库中的两个成员对象中定义了该符号,并且使用了这两个成员对象。
某个绝对符号被定义两次,而每次定义的值不同。
头文件声明并定义了变量。可能的解决方案有:
在 .h 中声明变量:extern BOOL MyBool;,然后在 .c 或 .cpp 文件中向它分配:BOOL MyBool = FALSE;。
将变量声明为 static。
将变量声明为 selectany。
当将 uuid.lib 与定义 GUID 的其他 .lib 文件(例如 oledb.lib 和 adsiid.lib)一起使用时。例如:
oledb.lib(oledb_i.obj) : error LNK2005: _IID_ITransactionObject
already defined in uuid.lib(go7.obj)
若要修复,请将 /FORCE:MULTIPLE 添加到链接器命令行选项,并确保 uuid.lib 是引用的第一个库。 有关更多信息,请参见知识库文章: Q148652,PRB: LNK2005 Errors When Link C Run-Time Libraries Are Linked Before MFC Libraries。
Q140440,FIX: Global Overloaded Delete Operator Causes LNK2005。
Q184235,PRB: LNK2005 Errors on New and Delete When Defining _ATL_MIN_CRT。
该错误之后为致命错误 LNK1169。
只要我在其他地方引用他就会出问题,原代码如下所示
#include "NonstaticTest.h" // encrypt core file
#include "wkaxanenhanced.h" // encrypt core fileNonStaticTest WkDmObject;/***************************************************************************** ---- Area Descriptions for Encryption/Decryption of Code and Data ----------*****************************************************************************/// NOTE: See the manual for a description of the principles behind AXAN.
// A detailed explanation of the WKBAREA structure and of all the flags
// can be found in the online help file.// ==========================================
// area 1: first 100 bytes of OnButtonCalc()
// ==========================================#define CB_AREA_ONBUTTONCALC 50struct {
WKBSELECT wkbselOnButtonCalc;
WKBAREA wkbar;
BYTE abGapMap[WKB_GET_MAP_SIZE(CB_AREA_ONBUTTONCALC)];
} wkbarOnButtonCalc = {
{
WKB_SEL_FEAL32, // algorithm to use
0, // ulCacheId filled by WKCRYPT
0, // CRC filled by WKCRYPT
12, // length of initialization data
{'W','I','B','U','-','S','Y','S','T','E','M','S'}
},
{// WKBAREA structure (prepared for AXAN)
// (WKB_AREA_CHKCRC set by WKCRYPT)
WKB_AREA_CODE|WKB_AREA_SELECT,
WKB_SEL_SYMFEAL,
WKB_SC_EXPDATE, // Selection Code filled by WKCRYPT
0, // CRC filled by WKCRYPT
0, // reserved
wkbarOnButtonCalc.abGapMap,
&(wkbarOnButtonCalc.wkbselOnButtonCalc) // none because direct encryption
}
};BOOL DecryptProgram(WIBUKEYDATA *pwkdata);提示错误信息如下
Encrypt.obj : error LNK2005: "struct __unnamed wkbarOnButtonCalc" (?wkbarOnButtonCalc@@3U__unnamed@@A) already defined in DialogThre.obj
Encrypt.obj : error LNK2005: "class NonStaticTest WkDmObject" (?WkDmObject@@3VNonStaticTest@@A) already defined in DialogThre.obj
.\Debug/diblook.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.