读书人

程序生成时一个有关问题高手老手请

发布时间: 2012-05-24 11:55:41 作者: rapoo

程序生成时一个问题,高手,老手请进(帮帮忙)
编程环境:visual studio2010
现象:在编译连接生成可执行程序是出现下面两句error messages
1>1.obj : error LNK2019: unresolved external symbol "void __cdecl findcontact(class std::set<class contactitem,struct std::less<class contactitem>,class std::allocator<class contactitem> > const &)" (?findcontact@@YAXABV?$set@Vcontactitem@@U?$less@Vcontactitem@@@std@@V?$allocator@Vcontactitem@@@3@@std@@@Z) referenced in function _main

1>1.obj : error LNK2019: unresolved external symbol "class contactitem __cdecl getcontactinfo(void)" (?getcontactinfo@@YA?AVcontactitem@@XZ) referenced in function _main

导致build failed。
上网搜了一下解决方案:
1. Project -> ** Properties... -> Configuration Properties -> Linker -> Input -> Additional Dependencies -> mil.lib
另外,在此之前,还需添加MIL库的相应目录:Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Include files中添加C:\Program Files\Matrox Imaging\Mil\Include 以及 Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Library files中添加C:\Program Files\Matrox Imaging\Mil\LIB。添加目录的目的是为了使VC在调用相应库文件时不必总是使用绝对地址,VC可以通过文件名在所包含的目录中进行搜索。这样,前面的mil.lib就不必使用绝对地址了。
【缺点】可移植性差,如果将原工程中的源文件和头文件中的内容copy下来重新建立该工程时(例如:在电子书或网络上找到的程序),仍需自己在工程中添加目录及所需的库文件。
2. 在程序前加入#pragma comment(lib, "mil.lib")也可以达到相同的效果。
【优点】避免了方案1所出现的问题。

第一种有几步都不一样了,估计不是vs2010的方案。
第二种提示找不到mil.lib


请大神解决

[解决办法]
findcontact
getcontactinfo

总结起来就是函数未定义。


第二种提示找不到mil.lib
1问:这个mil.lib你下载了吗?
2:#pragma comment(lib, "mil.lib")也可以达到相同的效果。
这里的"mil.lib"是相对于当前.cpp的路径,你路径设置的对吗?
如果mil.lib和当前.cpp在一个文件,那么在程序前加入#pragma comment(lib, "mil.lib")是对的。

读书人网 >C++

热点推荐