szahn
March 21st, 2008, 06:55 PM
I am getting an error in visual basic.net code when calling a function that returns an array of classes from the dll compiled in managed C++
Error:
"An unhandled exception of type 'System.Runtime.InteropServices.MarshalDirectiveException' occurred in toolbartest.exe
Additional information: Can not marshal return value."
**********
C Code:
**********
#using <mscorlib.dll>
public __gc class gwindow {
public:
System::Int64 hwnd;
System::Int64 ipid;
System::String *szWindowText;
System::String *szClassText;
System::String *szExecFile;
};
gwindow *__declspec(dllexport) foo() __gc [];
gwindow * wn = new gwindow();
wn->hwnd = (System::Int64)(tempWind->hwnd);
wn->ipid = (System::Int64)(tempWind->pid);
arr->Add(wn);
gwindow *gwindows __gc [];
gwindows =
static_cast<__gc class gwindow * []>(arr->ToArray(__typeof( __gc class gwindow)));
return (gwindows);
*************
VB Code:
*************
Public Class gwindow
Dim hwnd As Int64
Dim ipid As Int64
Dim szWindowText As String
Dim szClassText As String
Dim szExecFile As String
End Class
<DllImport("library.dll")> _
Friend Shared Function foo() As gwindow()
End Function
Error:
"An unhandled exception of type 'System.Runtime.InteropServices.MarshalDirectiveException' occurred in toolbartest.exe
Additional information: Can not marshal return value."
**********
C Code:
**********
#using <mscorlib.dll>
public __gc class gwindow {
public:
System::Int64 hwnd;
System::Int64 ipid;
System::String *szWindowText;
System::String *szClassText;
System::String *szExecFile;
};
gwindow *__declspec(dllexport) foo() __gc [];
gwindow * wn = new gwindow();
wn->hwnd = (System::Int64)(tempWind->hwnd);
wn->ipid = (System::Int64)(tempWind->pid);
arr->Add(wn);
gwindow *gwindows __gc [];
gwindows =
static_cast<__gc class gwindow * []>(arr->ToArray(__typeof( __gc class gwindow)));
return (gwindows);
*************
VB Code:
*************
Public Class gwindow
Dim hwnd As Int64
Dim ipid As Int64
Dim szWindowText As String
Dim szClassText As String
Dim szExecFile As String
End Class
<DllImport("library.dll")> _
Friend Shared Function foo() As gwindow()
End Function