我一直在环顾四周,但无法找到问题的解决方案。 我有一个用纯C编写的静态库(.lib),带有头文件(.h),我想在ac#项目中使用这个库,所以我做的是创建一个新的CLR项目来为我创建一个包装器静态库。 我的问题是关于类型和参数,对于许多函数我需要使用C中定义的结构:
typdef struct
{ int number;
int index;
} myRef;
以下是头文件中我的函数的原型:
int IndexToRef(int index, myRef* reef);
在我的dll包装器中,我有以下内容:
wrappper.h
namespace wrapper
{
public ref class myWrapperClass
{
public:
int w_IndexToRef(int index, myRef* reef);
}
}
wrapper.cpp
using namespace wrrapper;
int myWrapperClass::w_IndexToRef(int index, myRef* reef)
{
return IndexToRef(index, reef);
}
这段代码编译,我得到一个很好的dll,我在我的c#项目中使用它作为参考,但是当我使用ref关键字调用具有相同结构的函数时,我得到了错误
"无法从ref转换为*"
如何将结构从C#传递到托管DLL?