Hinzufügen von C ++ - DLLs zu einem C # -Projekt

9

Ich versuche, die Datei lame_enc.dll von LAME in einem C # -Projekt zu verwenden, aber hinzuzufügen das Ding scheint unmöglich.

Ich bekomme immer einen Fehler, der besagt, dass eine Referenz nicht hinzugefügt werden konnte, und um zu überprüfen, ob der Zugriff möglich ist, eine gültige Assembly oder COM-Komponente.

Ich habe keine C ++ Erfahrung, obwohl ich gerne die Funktionalität nutzen würde. Im Moment benutze ich Process aus dem .NET Framework, um lame.exe aufzurufen und Sachen zu machen, aber ich würde gerne wissen, ob es einen anderen Weg gibt.

    
KdgDev 22.05.2010, 19:02
quelle

4 Antworten

6

Sie müssen P / Aufrufen , um nicht verwaltete APIs aus verwaltetem Code aufzurufen.

    
Ranhiru Cooray 22.05.2010, 19:31
quelle
8

Sie können verwaltete Baugruppen nur als Referenz zu einem verwalteten Projekt hinzufügen. Was ich normalerweise in dieser Situation mache, ist, sie als Ressource anstatt mit den lokalen Einstellungen hinzuzufügen. Auf diese Weise ist die DLL an Ihr Projekt gebunden und wird mit diesem bereitgestellt. Ich verwende dann DllImport , um manuell die APIs zu erhalten, die ich von dieser DLL benötige.

    
bitbonk 22.05.2010 19:33
quelle
3

Um eine nicht verwaltete DLL (natives C ++) in C # zu verwenden, müssen Sie DllImport verwenden und keinen Verweis auf das Projekt in Visual Studio hinzufügen (und deshalb erhalten Sie einen Fehler).

Hier ist die Dokumentation von DllImport von der MSDN .

    
Sameh Deabes 22.05.2010 19:28
quelle
3

Sie müssen PInvoke verwenden, um Funktionen in Ihrer nativen lame dll aufzurufen. Sie können jedoch nur Funktionen aufrufen, die als "C" -Stil exportiert wurden.

Sie können ein Tool wie "PInvoke Interop Assistant" verwenden, das Ihnen bei der Ausarbeitung der PInvoke Call Signaturen hilft, Aufrufe von C # an Ihre native DLL zu machen:

Ссылка

    
Tim Lloyd 22.05.2010 19:49
quelle

Tags und Links