C ++错误:名称后跟'::'必须是一个类或命名空间名称。 DLL中的WindowsForm

所以我在visual studio 2012中创build了一个windows32 C ++ dll应用程序,然后在头文件部分添加了一个windows窗体,并给它起了名字“UserInterface.h”。 当我点击添加button,我得到一个popup窗口说:“你正在添加一个CLR组件到一个本地项目。你的项目将被转换为具有公共语言运行时支持。你想继续吗? 我点击是,它使文件“UserInterface1.cpp”和“UserInterface1.h”。

但是在“UserInterface1.h”中却出现了错误。 这里是它的内容:

#pragma once namespace AssultCubeDLL { //ERRORS HERE: ****************************************************** using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Summary for UserInterface /// </summary> // ERROS HERE: ********************************************************* public ref class UserInterface : public System::Windows::Forms::Form { public: UserInterface(void) { InitializeComponent(); // //TODO: Add the constructor code here // } protected: /// <summary> /// Clean up any resources being used. /// </summary> ~UserInterface() { if (components) { delete components; } } private: /// <summary> /// Required designer variable. /// </summary> // ERRORS HERE: ************************************************ System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> void InitializeComponent(void) { this->SuspendLayout(); // // UserInterface // ERRORS HERE: ******************************************************* this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(284, 262); this->Name = L"UserInterface"; this->Text = L"UserInterface"; this->Load += gcnew System::EventHandler(this, &UserInterface::UserInterface_Load); this->ResumeLayout(false); } #pragma endregion private: System::Void UserInterface_Load(System::Object^ sender, System::EventArgs^ e) { } }; } 

我添加了评论到错误popup的位置,如“错误:名称后跟'::'必须是类或名称空间的名称。 有谁知道为什么我得到这些问题?

Solutions Collecting From Web of "C ++错误:名称后跟'::'必须是一个类或命名空间名称。 DLL中的WindowsForm"

您将需要创建一个混合模式的应用程序。 Microsoft对于所需的步骤有明确的说明 。

MS指令将解决System和System :: Collections的问题,但不能解决System :: ComponentModel,System :: Windows :: Forms,System :: Data和System :: Drawing的问题。

要进行编译,您必须将缺少的DLL的引用添加到应用程序中。 您可以从stdafx.h文件中删除using <System.Windows.Forms> 。 右键单击属性并选择References... ,然后选择Add New Reference ,然后检查以下DLL

 System System.Data System.Drawing System.Windows.Forms 

代码现在将被编译。