


VC-Implementierungsmethode zum Schreiben einer von JAVA aufgerufenen DLL
Wie man mit VC eine DLL schreibt, die JAVA aufrufen kann
}(2) Kompilieren Sie die Java-Datei und kompilieren und generieren Sie dann die Header-Datei (für die Verwendung in VC). javac GB2PY.java // Klasse kompilieren und generieren (3) Erstellen Sie den Ordner com/bw/gb2py im aktuellen Ordner und Fügen Sie GB2PY.class hinzu. Legen Sie es in den Ordner, kehren Sie zum aktuellen Ordner zurück und rufen Sie den Javah-Befehl auf, um die Header-Datei zu generieren. javah com.bw.gb2py.GB2PY // Generieren Sie eine Header-Datei. Der Dateiname lautet com_bw_gb2py_GB2PY.h. Beachten Sie, dass der Inhalt der Header-Datei nicht geändert werden kann, da die generierte DLL sonst nicht verwendet werden kann (4) Erstellen Sie eine neue Win32-DLL Projekt mit dem Namen GB2PY in VC, Kopieren Sie com_bw_gb2py_GB2PY.h in das Projektverzeichnis und fügen Sie es dem Projekt hinzu. Kopieren Sie dann %JAVA_HOME%/include/jni.h und %JAVA_HOME%/include/win32/jni_md.h in das Projektverzeichnis und fügen Sie es dem Projekt hinzu. (5) Implementieren Sie die in com_bw_gb2py_GB2PY.h deklarierte Methode: Java_com_bw_gb2py_GB2PY_GetPY. Achten Sie auf die Konvertierung von Java-String und -Zeichen in c. Die Zeichenfolgen von Java sind in Unicode (Doppelbyte) codiert, während char ein Einzelbyte-Zeichensatz ist. int (*GetPY)(char* szGBString,PY &oPY);JNIEXPORT jstring JNICALL Java_com_bw_gb2py_GB2PY_GetPY
(JNIEnv * env, jclass, jstring name){static HMODULE hModle = LoadLibrary("PYconvert.dll"); //Drittanbieter-DLL
GetPY = (LPFUN)GetProcAddress(hModle,"GBToPY");int len;char charName[128];
char charPY[512];
len = env->GetStringLength(name) * 2 + 1; //Doppelbyte-Länge in Einzelbyte-Länge konvertieren, 1 hinzufügen, um das Abschlusszeichen hinzuzufügen
memset(charName, 0, len);
const wchar_t * w_buffer = env->GetStringChars(name, 0);
int wlen = wcslen(w_buffer);
len = WideCharToMultiByte(CP_ACP, 0, w_buffer, wcslen(w_buffer) + 1, charName, len, NULL, NULL);
env->ReleaseStringChars(name, w_buffer); //Der obige Code kopiert den Inhalt des Java-Strings name in das char-Array charName... //Lassen Sie einige Funktionscodes weg und konvertieren Sie chinesische Zeichen in Pinyin, indem Sie eine Drittanbieter-DLL aufrufen Funktion, gespeichert im charPY-Array int slen = strlen(charPY);
jchar * buffer = new jchar[slen];
len = MultiByteToWideChar(CP_ACP, 0, charPY, strlen(charPY), buffer, slen);
if (len > 0 & len
buffer[len] = 0; //Der obige Code konvertiert einen String vom Typ char in einen String vom Typ jchar jstring js = env->NewString(buffer, len);
delete [] buffer; return js;} (6) Kompilieren und generieren Sie eine DLL-Datei, die in Java aufgerufen werden kann (Sie müssen die im zweiten Schritt generierte Klasse verwenden)! :)
So schreiben Sie eine DLL-Datei für eine von VC geschriebene EXE-Datei und lassen diese EXE die DLL aufrufen
Du meinst, wie man eine DLL schreibt? , oder wie rufe ich die von Ihnen geschriebene DLL auf?
Wie schreibe ich dll:vc++6.0? Beim Erstellen eines neuen Projekts wählen Sie normalerweise eine der folgenden Optionen:
MFC AppWizard[dll] kann die Dynamic Link Library des MFC-Frameworks nutzen
Win32 Dynamic Link Library-Fenster32-Bit-Standard-Dynamikbibliothek
Wählen Sie dann das benötigte Framework aus und schließen Sie es ab. Die Basis-DLL ist fertig.
Wenn Sie vs2003 und höher haben (vs2010 wurde noch nicht verwendet, daher werde ich es nicht erwähnen), erstellen Sie ein neues
Es gibt zwei Arten, die im Ingenieurwesen häufig verwendet werden:
MFC->MFC Dll
Win32->Beliebig->Wählen Sie die DLL-Option im Popup-Dialogfeld aus
Weitere Optionen hängen von Ihren Bedürfnissen ab. Dann ist es fertig und die Basis-DLL ist fertig.
Rufen Sie die DLL auf, die Sie geschrieben haben: Verwenden Sie LoadLibrary("xxx.dll");
dort, wo Sie sie aufrufen müssenxxx.dll ist die DLL, die Sie geschrieben haben, wenn Sie sie dann in xxx.dll geschrieben haben
Für die Schnittstelle können Sie die folgende Methode verwenden, um die Methode in der DLL aufzurufen:
1. Fügen Sie die Schnittstellen-Header-Datei der DLL in Ihr exe-Projekt ein. Die Schnittstellenfunktion lautet beispielsweise void FunName(int a);
2. typedef void(*Func)(int); //Schnittstelle definieren
3. Bei Bedarf verwenden:
........................
HMOUDLE hMyDll = LoadLibrary("xxx.dll");
if (hMyDll != NULL)
{
Func *pDllFun=(Func *)::GetProcAddress(hMyDll,"FunName");//FunName ist die Schnittstellenfunktion in Ihrer Dll
if (pDllFun != NULL)
{
pDllFun(1); //Funktion in Dll aufrufen
}
}
4. Deinstallieren Sie die DLL, wenn sie nicht mehr benötigt wird. FreeLibrary(hMyDll);
/////////////////////////////////////////////////////////////////////////////// /// /////
Wurde Ihre DLL in dem Verzeichnis generiert, in dem sich die Exe befindet?
Das obige ist der detaillierte Inhalt vonVC-Implementierungsmethode zum Schreiben einer von JAVA aufgerufenen DLL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Was bedeutet die Drive Health -Warnung in Windows -Einstellungen und was sollten Sie tun, wenn Sie die Festplattenwarnung erhalten? Lesen Sie dieses Php.cn-Tutorial, um Schritt-für-Schritt-Anweisungen zu erhalten, um diese Situation zu bewältigen.

In Artikel werden die Bearbeitungs -Windows -Registrierung, Vorsichtsmaßnahmen, Sicherungsmethoden und potenzielle Probleme aus falschen Änderungen erläutert. Hauptproblem: Risiken der Systeminstabilität und des Datenverlusts durch unsachgemäße Änderungen.

In Artikel werden die Verwaltung von Windows -Diensten für die Systemgesundheit erörtert, einschließlich Starten, Stoppen, Neustarten von Diensten und Best Practices für Stabilität.

In Artikeln werden Standard -Apps für Dateitypen unter Windows geändert, einschließlich Rückkehr- und Massenänderungen. Hauptproblem: Keine integrierte Option zur Änderung der Schüttung.

Der Dampfwolkenfehler kann durch viele Gründe verursacht werden. Um ein Spiel reibungslos zu spielen, müssen Sie einige Maßnahmen ergreifen, um diesen Fehler zu entfernen, bevor Sie das Spiel starten. PHP.CN -Software führt in diesem Beitrag einige beste Möglichkeiten sowie nützlichere Informationen ein.

Möglicherweise sehen Sie, dass die „Verbindung zu den Windows Metadata und Internet Services (WMIS) nicht hergestellt werden konnte“. Fehler beim Ereigniszuschauer. In diesem Beitrag von PHP.CN wird das Problem der Windows -Metadaten und des Internet -Dienste entfernen.

KB5035942 Update -Probleme - Das Absturzsystem kommt häufig bei Benutzern vor. Die Menschen hoffen, einen Ausweg aus der Art von Schwierigkeiten herauszuholen, wie zum Beispiel eines Absturzsystems, Installation oder Klangprobleme. Targeting dieser Situationen, in diesem Beitrag, der von Php.cn Wil veröffentlicht wurde

In dem Artikel wird erläutert, wie der Gruppenrichtlinieneditor (Gpedit.MSC) in Windows verwendet wird, um die Systemeinstellungen zu verwalten, um gemeinsame Konfigurationen und Fehlerbehebungsmethoden hervorzuheben. Es stellt fest, dass gpedit.msc in Windows Home Editions nicht verfügbar ist, was schlägt, was vorschlägt, was vorschlägt
