Heim Computer-Tutorials Computerwissen VC-Implementierungsmethode zum Schreiben einer von JAVA aufgerufenen DLL

VC-Implementierungsmethode zum Schreiben einer von JAVA aufgerufenen DLL

Jan 22, 2024 pm 04:57 PM

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üssen

xxx.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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Entdecken Sie, wie Sie die Antriebsgesundheitswarnung in Windows -Einstellungen beheben können Entdecken Sie, wie Sie die Antriebsgesundheitswarnung in Windows -Einstellungen beheben können Mar 19, 2025 am 11:10 AM

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.

Wie bearbeite ich die Registrierung? (WARNUNG: Verwenden Sie mit Vorsicht!) Wie bearbeite ich die Registrierung? (WARNUNG: Verwenden Sie mit Vorsicht!) Mar 21, 2025 pm 07:46 PM

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.

Wie verwalte ich Dienste in Windows? Wie verwalte ich Dienste in Windows? Mar 21, 2025 pm 07:52 PM

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.

Wie ändere ich die Standard -App für einen Dateityp? Wie ändere ich die Standard -App für einen Dateityp? Mar 21, 2025 pm 07:48 PM

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.

Wie repariere ich den Dampfwolkenfehler? Probieren Sie diese Methoden aus Wie repariere ich den Dampfwolkenfehler? Probieren Sie diese Methoden aus Apr 04, 2025 am 01:51 AM

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.

Windows -Metadaten- und Internetdiensteprobleme: Wie beheben Sie es? Windows -Metadaten- und Internetdiensteprobleme: Wie beheben Sie es? Apr 02, 2025 pm 03:57 PM

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.

So beheben Sie das KB5035942 -Update -Probleme - Absturzsystem So beheben Sie das KB5035942 -Update -Probleme - Absturzsystem Apr 02, 2025 pm 04:16 PM

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

Wie benutze ich den Gruppenrichtlinien -Editor (Gpedit.msc)? Wie benutze ich den Gruppenrichtlinien -Editor (Gpedit.msc)? Mar 21, 2025 pm 07:48 PM

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

See all articles