我已经获得了需要在我们的 C# 应用程序中使用的第三方 C/C++ 库(.dll、.lib、.exp 和 .h)。
ThirdPartyLibrary.h 包含...
class AClass {
public:
typedef enum {
green = 7,
blue = 16
} Color;
virtual int GetData()=0;
virtual int DoWork(Color, char *)=0;
};
void * Func1(int, AClass **aClass);
在我的 C++/CLI 代码中,我已经完成了这个......
#include "ThirdPartyLibrary.h"
using namespace System;
using namespace System::Runtime::InteropServices;
namespace Wrapper {
public ref class MyBridgeClass
{
private:
AClass* pAClass;
public:
// C# code will call this method
void AMethod (int x)
{
int y = x+10;
Func1 (y, &(this->pAClass)); // <-- error!
}
}
}
我收到一个构建错误,内容为...
cannot convert parameter 2 from 'cli::interior_ptr<Type>' to 'AClass **'
with
[
Type=AClass *
]
Cannot convert a managed type to an unmanaged type
有任何想法吗?也许我的 C++/CLI 中需要#pragma manage/unmanged 标签?