2012-05-20 44 views
0

我有C++/cli类库项目。我需要导入C++原生类。他们宣称这样import native C++ classes

class __declspec(dllexport) Check 
{ 
    const char* type; 
protected: 
    int val; 
public: 
    Check(int); 
    Check(); 
    const char* Type(); 
    void Type(const char*); 
    virtual int Val(); 
    void Val(int); 
    ~Check(){}; 
}; 

class __declspec(dllexport) Test:public Check 
{ 
    const char* type; 
public: 
    Test(int x); 
    int Val(); 
    ~Test(){}; 
}; 

如何将它们导入到C++/CLI项目?(我有.dll和.lib文件)

回答

2

你没有“进口”原生代码,它不没有类似描述类型的托管程序集中的元数据。

你必须这样做,老式的方式。您必须在源代码中使用#include来包含声明这些类的.h头文件。使用#pragma managed(push,off)和#pragma managed pop来包装这些#includes,以确保编译器理解这些是本地代码声明。同时要注意,您发布的声明不够好,这些类必须以__declspec(dllimport)属性出现。你通常使用一个宏。

而且您必须告诉链接程序链接DLL的导入库.lib。项目+属性,链接器,输入,其他依赖项设置。

您可以在this answer中找到有关编写托管类包装的更多提示。

+0

更好的是,忘记'dllexport'和导入库,并且只需要一个混合模式程序集,它包含本地实现和托管包装器在一个二进制文件中。 –