• MFC下debug改成release版本出现问题及解决办法


      自己在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找地址时找不到。有知道的同学可以共享下,谢谢。

    共勉!

  • 相关阅读:
    回文链表
    istringstream
    编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个对立的元素存于vector中
    c++ primer,友元函数上的一个例子(By Sybase)
    类的静态成员
    聚合类和字面值常量类
    隐式的类类型转换
    构造函数
    类的作用域
    类的其他特性
  • 原文地址:https://www.cnblogs.com/zCoderJoy/p/3948945.html
Copyright © 2020-2023  润新知