我在VC++中写了一个类,建了一个DDL,在VC中能调用,C#中也能用,但传进去的一个结构体改变不了两个接口如下:
C++
extern "C"   LONG  __declspec(dllexport) LoadConfig(TCHAR pPath [] , Cfginfo  *Cfg )
c#如下:
public IniFile
{
[DllImport("ConfigDLL.dll",EntryPoint="LoadConfig")])]
 public static extern Int32 LoadConfig(string pPath,  Cfginfo info);
}
我是这样做的
    Cfginfo cfg = new cfg();
    IniFile.LoadConfig("asdfadsf",cfg);
cfg 的值怎样也改不了用了 ref 还是不行

解决方案 »

  1.   

    照理说ref就可以了,你可以如下试试
    [MarshalAs(UnmanagedType.LPStruct )]Cfginfo 如果是out参数,可以如下
    [Out,MarshalAs(UnmanagedType.LPStruct )]Cfginfo 
      

  2.   

    你的Cfginfo是如何声明的,给出dll中以及c#中的。
      

  3.   

    估计是Cfginfo里边的东东有问题
      

  4.   

    C++中char的指针数组不能和C#的string[]相对应,不知道为什么会这样,调用C++dll,在DLL中他不让我NEW
      

  5.   

    to C++中char的指针数组不能和C#的string[]相对应,不知道为什么会这样,调用C++dll,在DLL中他不让我NEW先贴出在c++中的这个数组声明