C++里
extern __declspec(dllexport) int* GetPoint(char*  path)C#里
[DllImport("aaa.dll", EntryPoint = "GetPoint")]
public static extern Array GetTextBlock(string path);提示找不到入口点,请问这样该怎样调用呢?

解决方案 »

  1.   

    看看调用约定,你的C++函数是不是__stdcall 还有用没用extern "C",不然不行。你用工具看一下DLL导出函数名。
      

  2.   

    现在改成extern   "C" 也还是不行啊,函数名没有问题,我如果只返回int型就可以通过,但要是返回数组就不行了
      

  3.   

    c++ 的数组就是指针,返回intptr
    然后用Marshal.Ptr,然或用循环用Marshal.ReadInt32获取每个数组值
    但是你这是一个不好的方式,
    第一  int* 返回值是在dll内部开的内存,谁来负责释放他,
    第二,你没有返回具体的数组大小信息,c#很不好明白它具体的尺寸,
    所以最好把数组作为参数从c#传入dll,再由dll填充他
    通过
    int[] array = new ....
    Systsem.Intptr ptr = Marshal.UnsafeAddrOfPinnedArrayElement(array,0);
    yourdllmethod(ptr,str);
      

  4.   

    To hdt : 跟随你来得哦 ,学习To 楼主 :返回值确实是IntPtr 呵呵  我就知道这个了 变量的指针对应的是IntPtr类型