2016-05-24 4 views
1

Ich versuche, ein nicht verwaltetes DLL-Paket für C# für ein C++ SDK, das ein Client bereitgestellt hat, einzurichten. Dieses SDK verwendet die Variablen std :: string und std :: wstring. Ich fand heraus, dass es schwer/unmöglich ist, STL-Variablen wie string und wstring dafür zu verwenden, aber es ist mein letzter Ausweg. Ich hoffe wirklich auf jemanden, der mir einen möglichen Weg erklären könnte, einen C# dll-Wrapper für C++ - Methoden zu erstellen, die std :: string & std :: wstring verwenden.Verwenden von std :: string in C++ für nicht verwaltete C# dll

+2

Es ist schwer, in C++, es kann nur funktionieren, wenn Sie die Verwendung * genau * denselben C++ Compiler mit den * genau * gleichen Buildeinstellungen. Was immer nur in der Praxis funktioniert, wenn Sie Quellcode haben oder ein hoch disziplinierter Softwareanbieter, der Ihnen mehrere Builds zur Verfügung stellt. In C# ist es unmöglich, dass Sie diese C++ - Vorlagenklassenobjekte nicht erstellen/zerstören/interpretieren können. Sie benötigen einen C++/CLI-Wrapper. Stellen Sie sicher, dass Sie mit dem Bibliothekshersteller zusammenarbeiten, um zu erhalten, was Sie benötigen. –

+0

Ich arbeite mit den genauen C++ - Compilern, aber das ist glücklicherweise nicht das Problem. Aber vielleicht für die zukünftige Planung könnte es eine gute Idee sein, das C++/CLI zu verwenden. –

+0

Scheint, Sie haben die Nachricht verpasst, es ist ** erforderlich ** C++/CLI zu verwenden. Es gibt keine Planung, die Zukunft ist heute. Und ignorieren Sie nicht die * exakt gleichen Build-Einstellungen * Anforderung, der Unterschied zwischen den Build-Einstellungen Debug und Release ist bereits gut genug, um Speicher zu beschädigen. –

Antwort

0

Haben Sie versucht, std::string-System::String^ Umwandlung wie in MSDN docs angegeben

+0

Ich möchte das tun, aber das SDK verwendet bereits Methoden, die ich nicht ändern kann, die die std :: string verwenden –