连接错误error LNK2019,请大侠指正
使用VS2010建的空项目,然后编写主函数和调用函数
主函数:
#include <iostream>
#include "../../global/descriptor.h"
int main()
{
std::cout << codeinfo(2) << std::endl;
system("pause");
return 0;
}// 主函数完成;
调用函数头文件;
descriptor.h
extern const char * const codeinfo(int info_code);
调用函数CPP
const char * const codeinfo(int info_code)
{
return (*addr[type])[code];
}
编译成功,连接失败,提示如下:
1>main.obj : error LNK2019: unresolved external symbol "char const * __cdecl codeinfo(int)" (?codeinfo@@YAQBDH@Z) referenced in function _main
1>H:\my_program_life\HUXUEFENG\MAIN\Debug\test_string_capacity.exe : fatal error LNK1120: 1 unresolved externals
其中main.cpp和descriptor.h及descriptor.cpp不在同一目录
目录树如下:
_use_case
| |___test
| |__main.cpp
|
|_global
|___descriptor.h
|___descriptor.cpp
其中use_case和global属于同级目录
test是use_case下的子目录,其中包含main.cpp主函数
global没有子目录,直接包含descriptor.h和descriptor.cpp
小弟无解,请大侠指正;万分感激;
[解决办法]
#include "../global/descriptor.h"
多了一级吧。
[解决办法]
unresolved external symbol 错误,一般是主函数在调用功能函数的时候,可以找到函数的声明,但是找不到函数的实现,这就表现出来,可以编译通过,但是链接会失败。你可以试着把所以的函数都放在主函数文件中,看是否运行成功,如果成功则说明可能是你在不同文件下分块实现函数功能时出现了问题。
[解决办法]
按我说的步骤一步一步来:
1,先在你的源代码里用ide的功能跟进第二行的那个#include 看看ide能不能帮你识别到,
识别到说明没问题,继续第二步,
如果识别不到,请调整头文件,直至你能跟进去.
(具体怎么改请好好温习C++的头文件工程设置内容,百度谷歌)
2,到你的工程路径中添加-l项(字母l,也就是你所调用的第三方库dll的link选项).
编译通过的话可以推断你的第一步应该没问题,应该是第二步出错了.检查下吧.vs我不熟,你查查它怎么设置link选项吧.
[解决办法]
project -> properties -> reference -> 添加参考目录。