Visual c++ 如何将MFC支持添加到现有Win32 C++;项目 我正在创建一个C++应用程序,它使用Qt来创建GUI。但是,我需要使用依赖于MFC的第三方库(用于CString等)。是否需要将MFC添加到我的应用程序中以允许我使用此库,还是需要我自己重写它

Visual c++ 如何将MFC支持添加到现有Win32 C++;项目 我正在创建一个C++应用程序,它使用Qt来创建GUI。但是,我需要使用依赖于MFC的第三方库(用于CString等)。是否需要将MFC添加到我的应用程序中以允许我使用此库,还是需要我自己重写它,visual-c++,mfc,Visual C++,Mfc,我看到了,但它没有告诉我如何手动将MFC添加到项目中。如果它仅用于CString(可能还有其他一些实用程序功能),您可能会更好地搜索替换项。有相当多的人在互联网上四处游荡 例如,此实现如果库应用程序接受/返回/使用cstring,它将需要与MFC LIB链接,或者将MFC LIB静态链接 如果您使用的是VisualStudio,您可以根据需要选中“在静态/共享库中使用MFc”,它不会;只要保持当前程序入口点,就不会影响应用程序GUI。是的,您可以通过在编译和链接选项中选择MFC来使用它。如果您的

我看到了,但它没有告诉我如何手动将MFC添加到项目中。

如果它仅用于CString(可能还有其他一些实用程序功能),您可能会更好地搜索替换项。有相当多的人在互联网上四处游荡


例如,此实现

如果库应用程序接受/返回/使用cstring,它将需要与MFC LIB链接,或者将MFC LIB静态链接


如果您使用的是VisualStudio,您可以根据需要选中“在静态/共享库中使用MFc”,它不会;只要保持当前程序入口点,就不会影响应用程序GUI。

是的,您可以通过在编译和链接选项中选择MFC来使用它。如果您的唯一原因是因为第三方库,那么您可能希望避免在自己的代码中使用任何MFC特性。这样,如果您更换了第三方库,您也可以关闭MFC。

如果您可以找到第三方MFC库的替代品,则会更容易

静态或动态链接的第三方库需要与编译第三方库文件所用版本完全相同的MFC版本。MFC类在版本之间不兼容二进制,甚至在同一版本的配置(静态/动态链接MFC&CRT、单线程/多线程CRT、调试、发布、X86、X64、MBCS、UNICODE等)之间也不兼容二进制


如果使用CString::LoadString或其他任何访问MFC模块状态的方法,则需要全局CWinApp。获取它的一个简单方法是创建一个常规DLL。如果向QT项目中添加一个,则需要将代码从退出的entry函数移动到InitInstance和existInstance。

如果现有Windows程序使用消息循环(而不是MFC使用的单独事件处理程序)您可以在处理该消息循环和重写WindowProc函数所需的任何级别对窗口进行子类化


例如,我使用一个现有的Win32程序,通过替换子类CStatic的WindowProc,将其主窗口嵌入到CStatic图片窗口中。上一个程序的功能包含在CStatic中,但我可以将其他MFC控件和范例添加到周围的边框中。

要将MFC支持添加到Integrata,需要进行以下更改:

  • 更改应用程序入口点:
    • 通常,qt应用程序入口点是main,对于MFC应用程序,预期入口点是WinMain/wWinMain
  • 添加所需的MFC依赖项(mfc140d.dll/mfc140.dll等)。
    • 将System32文件夹添加到环境路径以查找必要的依赖项
    • 在创建安装程序时打包所需的DLL