convert string type from managed to unmanaged

Y

Yoavo

Hi,
I 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
 
M

Mattias Sjögren

what am I doing wrong ?

There's no string type defined. Perhaps you meant to use String^ as
the 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top