LNK2005错误
(1)可能你定义了和OS中DLL或者是LIB导出的相关函数相同的名字
比如说:最常见的情况是strcpy()函数不好,你定义了自己的strcpy()函数,但是这个函数是系统中DLL文件导出的函数,你需要做的是把你实现的这个比较健壮的strcpy()函数改
个名字:如改成mystrcpy()
char * mystrcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||(strSrc==NULL)) //[1]
throw "Invalid argument(s)"; //[2]
char * strDestCopy=strDest; //[3]
while ((*strDest++=*strSrc++)!='\0'); //[4]
return strDestCopy;
}
或者是:
char* mystrcpy(char* dest, const char* src)
{
char* tmp = dest;
while (*tmp++ = *src++)
;
return dest;
}
/* the emplementation in Linux */
char* mystrcpy(char* dest, const char* src)
{
char* tmp = dest;
while ((*tmp++ = *src++) != '\0')
;
return dest;
}
(2)如果一个工作空间中有多个工程的时候,如果有1个工程需要使用“多线程库”,
则,你必须使用多线程库,具体设置如下:
Project settings
|
*--- C/C++
|
*--- Code generation
|
*---- Use run-time library
|
*---- Multithreaded
(3)不同的LIB库发生冲突,通常是LIBCMT.lib和别的库发生冲突,这时候,可以通过调整库的优先路径和禁掉libcmt.lib库来尝试下时候能够解决此类问题
比如说:最常见的情况是strcpy()函数不好,你定义了自己的strcpy()函数,但是这个函数是系统中DLL文件导出的函数,你需要做的是把你实现的这个比较健壮的strcpy()函数改
个名字:如改成mystrcpy()
char * mystrcpy(char * strDest,const char * strSrc)
{
if ((strDest==NULL)||(strSrc==NULL)) //[1]
throw "Invalid argument(s)"; //[2]
char * strDestCopy=strDest; //[3]
while ((*strDest++=*strSrc++)!='\0'); //[4]
return strDestCopy;
}
或者是:
char* mystrcpy(char* dest, const char* src)
{
char* tmp = dest;
while (*tmp++ = *src++)
;
return dest;
}
/* the emplementation in Linux */
char* mystrcpy(char* dest, const char* src)
{
char* tmp = dest;
while ((*tmp++ = *src++) != '\0')
;
return dest;
}
(2)如果一个工作空间中有多个工程的时候,如果有1个工程需要使用“多线程库”,
则,你必须使用多线程库,具体设置如下:
Project settings
|
*--- C/C++
|
*--- Code generation
|
*---- Use run-time library
|
*---- Multithreaded
(3)不同的LIB库发生冲突,通常是LIBCMT.lib和别的库发生冲突,这时候,可以通过调整库的优先路径和禁掉libcmt.lib库来尝试下时候能够解决此类问题
浙公网安备 33010602011771号