背景:
由于VC++6.0对于现在的我来说,只是一个工具,暂时没有太多的时间分配到这块去深究它,由于不明其原理,因此也只是在此把错误积累下来,以备下次相同错误出现时能快速排除,节省时间。
正文
一、出现警告“warning c4273:inconsistent dll linkage”
在报错的XX.h头文件中可以看到如下定义
#ifdef XXX_DLL_EXPORTS #define XXX_API extern"C" __declspec(dllexport) #else #define XXX_API extern"C" __declspec(dllimport) #endif
解决方案:
点击菜单栏,Poject --> Setting --> C/C++ --> General --> Preprocessor definitions中加上XXX_DLL_EXPORTS
这样警告就消除了。
二、出现警告“warning C4805: '==' : unsafe mix of type 'int' and type 'const bool' in operation”
只需要将"return true"改成"return TRUE"就OK了。“false”同理。
三、出现报错“error LNK2001: unresolved external symbol "函数名称"”
出现这种错误,很大可能是DLL的“.h”文件内函数声明与“.cpp”文件内的函数不一致;
我就出现了两种这种情况,
第一种是在函数实现时多加了两个参数,声明时却未加,可是编译却能通过(WTF!?)。
第二种是在函数声明的时候,没有加导入导出的标志 XXX_API,也能编译通过!放到APP却会报错。
附:VC6.0调出打印窗口的方法
点击Project --> Setting --> Post-build Setup --> Post-build command(s):
加入editbin /SUBSYSTEM:CONSOLE $(OUTDIR)XXX.exe(可执行文件文件名),最后点击“Rebuild all”进行重新编译即可。
记录地点:深圳WZ
记录时间:2016年3月3日