Wie zum Aufruf von C++ - code von C#
Habe ich C++ - code. Der code enthält Windows mobile GPS aktivieren/deaktivieren Sie die Funktionalität. Möchte ich nennen, dass die Methode aus C# - code, das bedeutet, dass, wenn der Benutzer klickt auf eine Schaltfläche, wird C# code aufrufen soll in C++ - code.
Dies ist der C++ code für die Aktivierung der GPS-Funktionalität:
#include "cppdll.h"
void Adder::add()
{
//TODO: Add your control notification handler code here
HANDLE hDrv = CreateFile(TEXT("FNC1:"), GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (0 == DeviceIoControl(hDrv, IOCTL_WID_GPS_ON, NULL, 0, NULL, 0, NULL, NULL))
{
RETAILMSG(1, (L"IOCTL_WID_RFID_ON Failed !! \r\n")); return;
}
CloseHandle(hDrv);
return (x+y);
}
- Und dies ist die header-Datei cppdll.h
:
class __declspec(dllexport) Adder
{
public:
Adder(){;};
~Adder(){;};
void add();
};
Wie kann ich rufen Sie die Funktion mit C#?
Bitte, kann mir jemand helfen mit diesem Problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gebe Ihnen ein Beispiel.
Sollten Sie erklären, Ihre C++ - Funktionen, die für den export so (vorausgesetzt, der letzten MSVC-compiler):
Und kompilieren Sie das C++ Projekt als dll-Bibliothek. Legen Sie Ihr Projekt Ziel-Erweiterung .dll, und Konfigurationstyp in Dynamische Bibliothek (.dll).
Dann in C# deklarieren:
Dann rufen Sie Ihre C++ - test-Funktion, wie man es erwarten würde. Beachten Sie, dass es ein wenig kompliziert, sobald Sie wollen, übergeben Sie Zeichenfolgen, arrays, Zeiger, etc. Siehe zum Beispiel diese SO Frage.
\GpsCppToDll.cpp(2) : warning C4627: '#include "GpsCppToDll.h"': skipped when looking for precompiled header use 1> Add directive to 'stdafx.h' or rebuild precompiled header 1>.\GpsCppToDll.cpp(15) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?