我有了一个源文件,叫"Ha_diji_string.cpp",里面定义了一个叫"tochar"的函数:
char* tochar(const char todata[], int len) {
char* re = new char[len];
for (int i = 0; i < len; ++i) {
re[i] = todata[i];
}
return re;
在另一个文件里导入他的头文件(#include"Ha_diji_string.hpp"),但VS报错了,内容:
错误 LNK2005 "char const * __cdecl p(void)" (?p@@YAPEBDXZ) 已经在 try.obj 中定义
半天不能解决,我做了一个实验,定义一个源文件,从另一个文件中导入,当源文件中定义的函数返回值为 char 或const char**时,他就会报以上错误,为其他的时,比如 int ,就不会报错:
1、报错的
const char* p() {
return "p";
}
2、不报错的
int p() {
return 'p';
}
也就是说,当这个文件被导入时,里面不能有函数的返回值是 char 或const char**,就很奇怪,这种问题第一次见。