VS2008 错误集

[C++] LNK2019: unresolved external symbol "__declspec(dllimport) xxx" referenced in xxx.
2009-04-16 23:28

写个c++程序,加载一个lib,你的h文件已经包含,lib中有实现,h中有定义,c++程序就是死活编译不通过,报错如题.....诡异

蒸腾了一天,发现原来lib(dll)是用c写的...c++调用c写的lib就会有这样的问题,因为c++ 的 function name 在编译的时候表示不一样,前面要多一些前缀,目的是为了实现overload功能,c是没有这个功能的。

解决方法:

解決方法
只要在 .h 中, 外面包上一层


#ifdef __cplusplus
extern "C" {
#endif

原來的 C .h 內容

#ifdef __cplusplus
}
#endif

 

这样C++程序调用这个头文件里面定义的函数的时候就不会加上前缀之类的东西了,特别强调的是,这样做之后,自然就不支持overload了哈,编译终于通过,唉,基本功还是不扎实啊。反省反省

 

 

http://hi.baidu.com/freecss/blog/item/a1b44d464907cc016b63e5c5.html是原地址.

vs2005调试DLL时,编译没有错误

但在启动调试的时候提示:

——————————————————————————————

无法启动程序“%CSIDL_PROGRAM_FILES%/XX/XX.exe”。

发生了通常表示安装被损坏的错误(代码 0x8007007e)。

如果问题仍然存在,则通过“控制面板”中的“添加或删除程序”

修复 Visual Studio 安装。

——————————————————————————————

经过查找,发现发生这种情况的原因是:

需要调用的DLL文件不存在。

解决方法:

将需要调用的所有DLL拷贝到WinCE设备中

正在调试的EXE文件所在的目录下面

(/Program Files/exe文件的名字)。

如:/Program Files/XX

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/joyzml/archive/2010/01/11/5176018.aspx

 

你可能感兴趣的:(c,function,dll,exe,WinCE,2010)