自己在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.0VCatlmfcincludeafxver_.h 81。
问题三:出现自己导出的第三方库出现问题,说未实行定义,看着像只声明未定义的问题。
下面一一来说明自己最后成功解决的办法:
一、错误一是由于笔者写的动态库时运行库是MT(不懂的可以搜索一下),但调用程序是MD,说是因为运行库不匹配造成的。即一个程序中混合了不同的运行时库(静态库和动态库,调试库和非调试库),可能会产生冲突,所以一个程序中应该使用相同的运行时库。
二、这个原因是因为可能你使用项目默认值MFC选项的时候,使用了dll共享功能(在共享DLL中使用MFC),而你的程序中使用了静态库版本导致,可以把在共享DLL中使用MFC改成在静态库中使用MFC来改正(注意这时你lib库也要是static版本的)。
三、在笔者遇到这个问题时也很纳闷,明明定义了而且实现了函数,但是还提示类似为实现的错误;后来发现时因为我的实现实在头文件中,也就是类里面实现的,inline函数,貌似在类里面实现不可以,要把实现放到cpp里面,这样就可以了。原因自己还不知道,猜测可能是在头文件中给出的是声明,而dll是用cpp生成的,没有实现,所以在lib找地址时找不到。有知道的同学可以共享下,谢谢。
共勉!