日期:2014-05-18  浏览次数:21182 次

C# 调用C++接口问题,传递参数为结构体引用,结构体中有返回数据
那边提供的C++环境下的调用程序,可以正常调用
C++:
//声明结构体
typedef struct _CAMERAINFO{
WORD wEncodeType;
WORD wHDWidth;
WORD wHDHeight;
WORD wCIFWidth;
WORD wCIFHeight;
DWORD version;
}CAMERAINFO, *PCAMERAINFO;
//调用dll接口函数
DLL_EXPORT int WAPA_IPC_GetCameraInfo(int index, CAMERAINFO &cameraInfo);
//实际调用语句
CAMERAINFO m_CameraInfotest[1];
int ret = WAPA_IPC_GetCameraInfo(0, m_CameraInfotest[0]);

------------------------------
c#环境下如何调用?
//c#结构体
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] public struct CAMERAINFO
  {
  public ushort wEncodeType;
  public ushort wHDWidth;
  public ushort wHDHeight;
  public ushort wCIFWidth;
  public ushort wCIFHeight;
  public uint version;
  }
//方法接口函数
[DllImport("SDK", EntryPoint = "WAPA_IPC_GetCameraInfo", CallingConvention = CallingConvention.Cdecl)]
  public static extern int WAPA_IPC_GetCameraInfo(int index,ref CAMERAINFO cameraInfo);
//实际调用
  CAMERAINFO[] cameraInfo = new CAMERAINFO[1];
   
  int c = WAPA_IPC_GetCameraInfo(0,ref cameraInfo[0]);
----------------------------------------
C++环境下的代码可以直接读取出数据,并将数据写回了机构体。
但C#环境下显示无法找到入口。请各位大虾帮忙!!


------解决方案--------------------
找不到入口是dll方面的问题,没有设置导出定义和extern "C"的话,函数导出后面会加一点文字