Hallo Experten,
ich wollte eben testweise eine DLL in C# aus Managed C++ heraus benutzen, bin aber gescheitert, obwohl das doch so einfach sein soll.
Installiert habe ich Visual C++ Express und Visual C# Express. Bei der C#-Bibliothek (oder wie das bei .NET heisst, Assembly) handelt es sich um die WiimoteLib.dll, die ich aus ihrem „$PROJEKT/bin/Debug/“-Ordner in den Debug-Ordner meines C+±Projektes kopiert hab.
Der Code selbst ist quasi irrelevant, aber das include funktioniert schon nicht so, wie ich das dachte.
// ---- Managed C++ ----
#include "stdafx.h"
#include "Debug\WiimoteLib.dll" // so sollte das doch angeblich gehen
using namespace System;
int main(array ^args)
{
Console::WriteLine(L"Hello World"); // irrelevant
return 0;
}
Beim Builden erhalte ich dann Hunderte Fehlermeldungen über die DLL:
------ Build started: Project: IntegrationTest, Configuration: Debug Win32 ------
Compiling...
IntegrationTest.cpp
h:\[...]\Debug\WiimoteLib.dll(1) : error C2018: unknown character '0x3'
h:\[...]\Debug\WiimoteLib.dll(1) : error C2018: unknown character '0x4'
h:\[...]\Debug\WiimoteLib.dll(1) : error C2018: unknown character '0x40'
h:\[...]\Debug\WiimoteLib.dll(1) : error C2146: syntax error : missing ';' before identifier 'ÿÿ¸'
--snip, halt immer so weiter--
h:\[...]\Debug\WiimoteLib.dll(6) : fatal error C1003: error count exceeds 100; stopping compilation
Build log was saved at "file://h:\[...]\Debug\BuildLog.htm"
IntegrationTest - 124 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Auch das Hinzufügen der DLL als Projektreferenz (Project -> References -> Add new reference -> (Auswahl WiimoteLib.dll)) hat kein Glück gebracht.
Und jetzt steh ich auf dem Schlauch, da alle Beispiele, die ich gefunden habe, das doch genau SO machen… (ja, natürlich kenn ich den „Hab ich genauso gemacht… ups“-Effekt )
Hoffnungsvoll,
kvida