如何创建一个使用AFX库的混合模式CLR . net DLL

How to create a mixed mode CLR .NET DLL that uses AFX libraries?

本文关键字:混合 模式 CLR DLL net AFX 创建 何创建 一个      更新时间:2023-10-16

我试图创建一个带有CLR选项的混合模式(托管和非托管)c++ DLL,我需要使用AFX库。因此,我将"afxwin.h"包含在一个文件中(使用GL/GL .h)。然而,无论我做什么,我都会遇到编译错误,我已经尝试了项目设置中的每个选项来修复它们,但没有用。

。当我用CLR选项编译时,我看到这个错误(当它编译包含afwin.h的文件时):

1>c:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfcincludeafx.h(24):致命错误C1189: #error: Building MFC application with/MD[d] (CRT dll版本)需要MFC共享dll版本。请#define _AFXDLL,否则不要使用/MD[d]

B。当我用stdafx.cpp中定义的_AFXDLL编译或启用"在共享DLL中使用MFC",以解决a中的错误时,我看到这些和同一文件中的其他一大堆错误:

1> _WIN32_WINNT未定义。默认为_WIN32_WINNT_MAXVER(参见WinSDKVer.h)1>c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxanimationcontroller.h(46): error C2059:语法错误:'-'1>c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxanimationcontroller.h(60):错误C2143:语法错误:在'}'之前缺少';'1>c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxanimationcontroller.h(60):错误C2238:意外的token(s)前面的';'1>c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxanimationcontroller.h(61): error C2059:语法错误:'public'1>c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxanimationcontroller.h(65): error C2059:语法错误:')'1>c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxanimationcontroller.h(65):错误C2589: '-':':'右边的非法标记1>c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxanimationcontroller.h(65): error C2059:语法错误:'::'1>c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxanimationcontroller.h(67):错误C2143:语法错误:在"{"之前缺少";"

对如何解决这个问题有什么想法吗?

将MFC选项更改为"在共享DLL中使用MFC "并不是那么简单,您可能需要更改其他选项。

最简单的方法是使用向导创建一个新的虚拟MFC项目,并比较两个项目的项目属性。

Re CLR,对我来说有效的是将所有托管的c++代码放在一个或两个源中,并仅为这些源而不是整个项目打开/CLR。