C ++ / CLI:将结构从c#传递到托管c ++ DLL

时间:2016-11-28 12:05:13

标签: c# .net dll c++-cli managed-c++

我一直在环顾四周,但无法找到问题的解决方案。 我有一个用纯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?

0 个答案:

没有答案