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
Mattias Sjögren - 04 Oct 2006 20:57 GMT
>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

Signature
Mattias Sjögren [C# MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Please reply only to the newsgroup.