我只是想C++/CLI工程里利用.net里那些XML,GDI+一类的库函数,还有C++的多重继承,如何把他封装成DLL

时间:2021-04-20 19:47:49
我想开发一点代码,代码中要用到c++的多重继承和template,主要是Native代码,但是我又想用到.Net中那些优雅的XML,GDI+一类的代码,所以我像这样写了一些类

template<class T>
public  class Class1 
{
public:
Class1(){
}

String^ Load1(){
return "s1";
}
};


template<class T>
public class Class2 
{
public:
Class2(){
}
String^ Load2(){
return "s2";
}
};

 public class  Class3 : public Class1<Class3>,
   public Class2<Class3>
{
public:
Class3(void);
~Class3(void);
public:
 void  XmlSerializeIn(XmlNode^ p){

XmlElement^ pThis = p->OwnerDocument->CreateElement("Test");

}
};


这个类的关键在于我要用到C++的多重继承,这样我就可以像ATL/WTL那样来用模板实现按需定制派生类的功能,.NET由于不支持多重继承,当继承的特性很多时基类要么很庞大,以至派生类根本用不着基类的功能或是与基类的功能相冲突。所以我想试试这种方式。

现在的问题是这个程序被编译成了DLL,用/clr参数,现在我如何才能在另个一个C++/CLI工程里访问我写的这些类呢?我试图用dllexport,但是上述的XmlSerializeIn函数被提示不能被export,因为它是__clrcall的,我并不要求这个库完全兼容.net CLR,只要能被另一个C++/CLI的程序识别即可,谁知道应该如何解决这个问题。

5 个解决方案

#1


写成.net类库不是很容易被net程序调用?

#2


不晓滴。。友情帮顶

#3


write managed wrapper classes

#4


用VC++.NET

#5


似乎是不能完成的任务。建议放弃使用.net的库,用C++库一样可以完成。

#1


写成.net类库不是很容易被net程序调用?

#2


不晓滴。。友情帮顶

#3


write managed wrapper classes

#4


用VC++.NET

#5


似乎是不能完成的任务。建议放弃使用.net的库,用C++库一样可以完成。