tse*_*lon 39 c++ linker gcc compilation visual-studio
在使用C++构建项目时,我发现调试链接错误很棘手,尤其是在获取其他人的代码时.人们使用什么策略来调试和修复链接错误?
Joe*_*der 22
不确定您的专业水平是什么,但这是基础知识.
下面是来自VS 2005的链接器错误 - 是的,如果你不熟悉它,这是一个巨大的混乱.
ByteComparator.obj : error LNK2019: unresolved external symbol "int __cdecl does_not_exist(void)" (?does_not_exist@@YAHXZ) referenced in function "void __cdecl TextScan(struct FileTextStats &,char const *,char const *,bool,bool,__int64)" (?TextScan@@YAXAAUFileTextStats@@PBD1_N2_J@Z)
Run Code Online (Sandbox Code Playgroud)
有几点需要关注:
此时,在许多情况下,最快的解决方法是搜索此函数的代码库并找到实现的位置.一旦你知道函数的实现位置,你就必须确保将两个地方链接在一起.
如果您使用的是VS2005,则可以使用"Project Dependencies ..."右键菜单.如果您正在使用gcc,那么您可以在makefile中查找可执行文件生成步骤(使用一堆.o文件调用gcc)并添加缺少的.o文件.
在第二种情况下,您可能缺少"外部"依赖项,而您没有代码.Win32库通常在您必须链接到的静态库中实现.在这种情况下,请转到MSDN或"Microsoft Google"并搜索API.在API描述的底部,给出了库名.将其添加到项目属性"Configuration Properties-> Linker-> Input-> Additional Dependencies"列表中.例如,MSDN上的 timeGetTime()函数页面告诉您使用页面底部的Winmm.lib.
| 归档时间: |
|
| 查看次数: |
18934 次 |
| 最近记录: |