日期:2014-05-19  浏览次数:20690 次

平台调用小难题
一个c语言的dll中有例如CStringTestFunc的接口定义,
参数为CStringListTest   的引用
如下:

class   CStringTest:   CObject
{
public:
CString           m_strIPAddress;
public:
CStringTest()   {};
virtual   ~CStringTest()   {};
};
class   CStringListTest   :   public   CTypedPtrList <CObList,   CStringTest*>
{
public:
CStringListTest()   {};
virtual   ~CStringListTest();
};

__declspec(dllexport)   bool   CStringTestFunc(CStringListTest&   cstrList);

以上为示例代码!
目前我需要在C#中通过dll调用这个接口,需要对CStringTestFunc方法进行重新包装,我在C#中把CStringListTest   类尝试定义为List <CStringTest> 类型或者ArrayList类型,都发现无法传递值到CStringTestFunc中。换句话说,在C#这边,我构造了CStringTest对象,并附值给strIPAddress,然后add到CStringListTest   对象并作为参数调用CStringTestFunc,但发现到了调用dll的CStringTestFunc方法中,对应的strIPAddress并没有附上值。应该是c#这边对CStringListTest   封装不对,求教该怎么做?

------解决方案--------------------
不会,帮顶!
------解决方案--------------------
平台调用不要试图传递c++本身的类
------解决方案--------------------
try to set up a bridge by C++.Net.

That means C++ <-> C++.Net <-> C#
------解决方案--------------------
顶上