|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
convert string type from managed to unmanagedI have an UmManaged DLL which contains an exported function: extern "C" { _declspec(dllexport)BSTR get_DocName(); } I want to call this function from a managed DLL. This is the declaration in the managed DLL: #pragma once #include <vcclr.h> using namespace System; using namespace System::Text; using namespace System::Runtime::InteropServices; [DllImport("C:\\EManaged.dll", EntryPoint="get_DocName")] extern string get_DocName(); namespace EManaged { public ref class Class1 { // TODO: Add your methods for this class here. }; } I get the following error: error C2146: syntax error : missing ';' before identifier 'get_DocName what am I doing wrong ? Note that if I change the return type of DocName to int, the code compiled OK. Yoav >what am I doing wrong ? There's no string type defined. Perhaps you meant to use String^ asthe return type? Anyway I guess a more correct declaration would be [DllImport("C:\\EManaged.dll", EntryPoint="get_DocName", CallingConvention=CallingConvention::Cdecl)] [returnvalue: MarshalAs(UnmanagedType::BStr)] extern String^ get_DocName(); Mattias -- Mattias Sjögren [C# MVP] mattias @ mvps.org http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com Please reply only to the newsgroup. |
|||||||||||||||||||||||