自己在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找地址时找不到。有知道的同学可以共享下,谢谢。
共勉!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?