c++中 的声明是 char* f(char *);c# 中声明
[DllImport("Crawl.dll",EntryPoint="f")]
public static extern StringBuilder f(StringBuilder url);
调用形式
StringBuilder sb1 = new StringBuilder("sssss");
StringBuilder sb2 = GetHTTPString(sb1);异常信息:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。调了两天关于C#调C++的库,崩溃了。微软做的神马玩意

解决方案 »

  1.   

    另外就是 DllImport 到底里面可以不可放相对路径啊 比如 ..\\c++project\\debug\\c++project.dll每次这么写就找不到dll了。必须要把dll拷贝到C#的目录下
      

  2.   

    我这两天也在弄。也没有弄出来。你有C++调用原型吗?
    StringBuilder f ???
      

  3.   

    不能放相对路径、可以放在bin下面或system32下。
    试试:
    public static extern IntPtr f(string url);url是in参数string类型就可以了。返回值是由非托管分配的,无法使用StringBuilder