1

我在 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 函数时,它会抛出一个错误,说“无法找到入口点”写“。有人可以解决这个问题吗?

4

0 回答 0