MFC下debug改成release版本出现问题及解决办法
2014-09-01 11:33
471 查看
自己在debug下成功运行了自己写的测试自己写第三方库的程序,这里有用到opencv库,所以同时用到了自己的库和opencv的库,需求因为要进行速度的测试,是想要把debug改成release版本,这里出现了错误改了一天,终于搞定。
这里遇到的错误及解决方法如下:
问题一:出现如下所示错误。
问题二:错误 77 error C1189: #error : Please use the /MD switch for _AFXDLL builds C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afxver_.h 81。
问题三:出现自己导出的第三方库出现问题,说未实行定义,看着像只声明未定义的问题。
下面一一来说明自己最后成功解决的办法:
一、错误一是由于笔者写的动态库时运行库是MT(不懂的可以搜索一下),但调用程序是MD,说是因为运行库不匹配造成的。即一个程序中混合了不同的运行时库(静态库和动态库,调试库和非调试库),可能会产生冲突,所以一个程序中应该使用相同的运行时库。
二、这个原因是因为可能你使用项目默认值MFC选项的时候,使用了dll共享功能(在共享DLL中使用MFC),而你的程序中使用了静态库版本导致,可以把在共享DLL中使用MFC改成在静态库中使用MFC来改正(注意这时你lib库也要是static版本的)。
三、在笔者遇到这个问题时也很纳闷,明明定义了而且实现了函数,但是还提示类似为实现的错误;后来发现时因为我的实现实在头文件中,也就是类里面实现的,inline函数,貌似在类里面实现不可以,要把实现放到cpp里面,这样就可以了。原因自己还不知道,猜测可能是在头文件中给出的是声明,而dll是用cpp生成的,没有实现,所以在lib找地址时找不到。有知道的同学可以共享下,谢谢。
共勉!
这里遇到的错误及解决方法如下:
问题一:出现如下所示错误。
问题二:错误 77 error C1189: #error : Please use the /MD switch for _AFXDLL builds C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afxver_.h 81。
问题三:出现自己导出的第三方库出现问题,说未实行定义,看着像只声明未定义的问题。
下面一一来说明自己最后成功解决的办法:
一、错误一是由于笔者写的动态库时运行库是MT(不懂的可以搜索一下),但调用程序是MD,说是因为运行库不匹配造成的。即一个程序中混合了不同的运行时库(静态库和动态库,调试库和非调试库),可能会产生冲突,所以一个程序中应该使用相同的运行时库。
二、这个原因是因为可能你使用项目默认值MFC选项的时候,使用了dll共享功能(在共享DLL中使用MFC),而你的程序中使用了静态库版本导致,可以把在共享DLL中使用MFC改成在静态库中使用MFC来改正(注意这时你lib库也要是static版本的)。
三、在笔者遇到这个问题时也很纳闷,明明定义了而且实现了函数,但是还提示类似为实现的错误;后来发现时因为我的实现实在头文件中,也就是类里面实现的,inline函数,貌似在类里面实现不可以,要把实现放到cpp里面,这样就可以了。原因自己还不知道,猜测可能是在头文件中给出的是声明,而dll是用cpp生成的,没有实现,所以在lib找地址时找不到。有知道的同学可以共享下,谢谢。
共勉!
相关文章推荐
- 程序Debuge版本编译通过,Release版本出现链接错误,解决办法
- 程序Debuge版本编译通过,Release版本出现链接错误,解决办法
- mysql4.1以上版本连接时出现Client does not support authentication protocol #1251错误问题解决办法
- mysql4.1以上版本连接时出现Client does not support authentication protocol #1251错误问题解决办法
- 停止预览时调用Camera.release(), 出现Method called after release()异常问题原因及解决办法
- mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
- mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
- 停止预览时调用Camera.release(), 出现Method called after release()异常问题原因及解决办法
- 转载 2014年04月22日 09:01:19 VC6.0工程在编译时由于设置问题有时不会生成release版本,只有debug版本。 解决犯非法如下: 工程——设置,将Setting for
- 解决VS+opencv中Debug版本与Release版本lib切换的问题
- mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
- 【游戏开发备注之一】关于Cocos2dx_v1.x版本iphone与Android运行出现图片白块、添加GameCenter报错问题及编译Android闪退的解决办法&&CCLOG与CClog的区别
- 解决Google map在手机上debug版本可用,release版本不可用的问题
- mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
- 使用JCMS2.5.7版本预览出现问题的解决办法。
- mysql4.1版本连接时出现Client does not support authentication protocol问题解决办法
- cocoapods 1.0.1版本安装出现的问题及解决办法
- 高版本Matlab绘图时出现无法正常绘图、图形锯齿现象严重等问题解决办法
- 解决VS+opencv中Debug版本与Release版本lib切换的问题