我在 C++ COM dll 中有一个函数
Write( Const VARIANT *pData);
其中 VARIANT 是一个结构类型
struct VARIANT
{
unsigned short vt;
unsigned short wReservered;
.....
};
我必须从我的 C# 代码中调用这个写入函数,并且将一个多维数组传递给该函数。我正在按如下方式进行编组..
c++代码
在头文件中:
LBE.h
class CLBE
{
public:
__declspec(dllexport) HRESULT __stdcall Write (/*[in]*/ const VARIANT* pData);
}
其中 VARIANT 是一个结构类型
struct VARIANT
{
unsigned short vt;
unsigned short wReservered;
.....
};
LBE.cpp
extern "C"
{
__declspec(dllexport) HRESULT __stdcall Write (const VARIANT* pData)
{
//impl
}
}
c# 代码
namespace abc
public class dataarea
{
[DLLImport("sample.dll",CallingConvention = CallingConvention.StdCall, EntryPoint = "Write")]
public static extern int Write ([MarshalAs(UnmanagedType.Struct)] ref object pData);
.
.
.
public saveobject()
{
object[,] pVariant;
// populating pVariant
object tempVar = pVarriant;
Write(ref tempVar);
}
}
但是当我从 c# 调用 write 函数时,它会抛出一个错误,说“无法找到入口点”写“。有人可以解决这个问题吗?