trouble using unmanaged c++ from c# using dllimport

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • alag20
    New Member
    • Apr 2007
    • 84

    trouble using unmanaged c++ from c# using dllimport

    Hi guys,
    i am having trouble importing c++ unmanaged dll into C# [winform]. Can someone help?
    Basically i am just trying to create a safearray of strings in c++ and trying to send it to C#.

    Here is my c++ code.
    Code:
    extern "C" __declspec(dllexport) BOOL GetStringArr(SAFEARRAY* arr)
    {
    SAFEARRAY*    myArray;
      SAFEARRAYBOUND  rgsabound[1];
    
      rgsabound[0].lLbound = 0;
      rgsabound[0].cElements = 5;
    
      myArray = SafeArrayCreate(VT_BSTR, 1, rgsabound);
      VARIANT* pvData = (VARIANT*)(myArray->pvData);
    
      pvData[0].vt = VT_BSTR;
      pvData[0].bstrVal = SysAllocString(L"FirstString");
      pvData[1].vt = VT_BSTR;
      pvData[1].bstrVal = SysAllocString(L"SecondString");
      pvData[2].vt = VT_BSTR;
      pvData[2].bstrVal = SysAllocString(L"ThirdString");
      pvData[3].vt = VT_BSTR;
      pvData[3].bstrVal = SysAllocString(L"FourthString");
      pvData[4].vt = VT_BSTR;
      pvData[4].bstrVal = SysAllocString(L"FifthString");
    
      arr = myArray;
      return true;
    }

    Here is my c# code.
    Code:
    [DllImport("MyData.dll", EntryPoint = "GetStringArr")]
    public static extern bool GetStringArr([MarshalAs(UnmanagedType.SafeArray)] out Array strServerList);
    i am getting exception when i call GetStringArr from C#. i am sure there is something silly i am doing. Can someone please help?

    Thanks in advance.
    Last edited by Plater; Sep 9 '10, 02:04 PM.
  • Plater
    Recognized Expert Expert
    • Apr 2007
    • 7872

    #2
    What is the exact exception that you get?

    Comment

    Working...