Click here to Skip to main content
14,456,907 members

Calling a C++ DLL function from VB.NET having SAFEARRAY structure

Member 10772496 asked:

Open original thread
Hello world,

In my VB.net code I call a C++ dll, which should return a ouput structure.
I have a problem when the vb.net code read this structure !


The c++ structure is :

struct output_data
{
    SAFEARRAY *output1;
    SAFEARRAY *output2;
}


In the VB.net side i declare the structure like this :

Structure Output
    MarshalAs(UnmanagedType.SafeArray); Public ouput1() As String
    MarshalAs(UnmanagedType.SafeArray); Public ouput2() As String
End Structure


And the function which read the structure from the c++ dll is :

WebMethod()> _
   Public Function Test(ByRef ouput_data As Output) As Double
       Test = Cpp_Function(ouput_data)
   End Function


When i excute my soft the following exeption is raised :

System.AccessViolationException was unhandled by user code
HResult=-2147467261



Please I need your help !!
Tags: C++, VB, VB.NET, DLL, marshalling, structures

Preview



When answering a question please:
  1. Read the question carefully.
  2. Understand that English isn't everyone's first language so be lenient of bad spelling and grammar.
  3. If a question is poorly phrased then either ask for clarification, ignore it, or edit the question and fix the problem. Insults are not welcome.
  4. Don't tell someone to read the manual. Chances are they have and don't get it. Provide an answer or move on to the next question.
Let's work to help developers, not make them feel stupid.
Please note that all posts will be submitted under the The Code Project Open License (CPOL).




CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100