tags:

views:

16

answers:

1

I am trying to use the marshalling library in my C++/CLI project. When compiled with #include <msclr/marshal.h> I get the error error C2872: 'IServiceProvider' : ambiguous symbol. Most of the resolutions seems to be suggesting moving #include <windows.h> like the one here -> Ambiguous references, but I dont have those includes. All I have is:

using namespace System;
using namespace System::Configuration;
using namespace std;
#include <msclr/marshal.h>

How do I debug this issue ?

A: 

You do, indirectly, marshal.h includes it. It dumps an enormous amount of identifiers in the global namespace. The macros are especially awkward, lots of them match names used in the framework.

Lots of things that marshal.h does can be done by the Marshal class as well. But I can't help you with that, you didn't mention why you want to use it. You can solve this particular mishap by putting the #include directive before the using statements:

#include <msclr/marshal.h>
using namespace System;
using namespace System::Configuration;
Hans Passant
I am trying to convert String ^ to const char*
anivas
Marshal::StringToCoTaskMemAnsi + Marshal::FreeCoTaskMem.
Hans Passant