如何创建使用AFX库的混合模式CLR .NET DLL?

时间:2014-03-26 07:30:46

标签: c++ .net visual-studio-2010 clr afx

我正在尝试使用CLR选项创建混合模式(托管和非托管)C ++ DLL,我需要使用AFX库。所以我包括了#34; afxwin.h"在一个文件中(使用GL / gl.h)。 但是无论我做什么,我都会遇到编译错误,并且我已经尝试了项目设置中的每个选项来修复它们,但没有用。

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

1> c:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ atlmfc \ include \ afx.h(24):致命错误C1189:#error:使用/ MD建立MFC应用程序[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.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(46):错误C2059:语法错误:' - ' 1> c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(60):错误C2143:语法错误:缺少&#39 ;;'之前'}' 1> c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(60):错误C2238:前面的意外令牌&#39 ;;' 1> c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(61):错误C2059:语法错误:' public' 1> c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(65):error C2059:语法错误:')' 1> c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(65):错误C2589:' - ' :' ::'右侧的非法令牌 1> c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(65):error C2059:语法错误:' ::' 1> c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxanimationcontroller.h(67):错误C2143:语法错误:缺少&#39 ;;'之前' {'

有关如何解决此问题的任何想法?我正在使用VS 2010。

1 个答案:

答案 0 :(得分:0)

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

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

Re CLR,对我有用的是将所有托管C ++代码放在一个或两个源中,并仅为这些源而不是整个项目启用/ CLR。​​