Kompilierte C++-Bibliotheksfunktion nicht gefunden
Beim Schreiben von C++-Programmen kann es beim PHP-Editor Youzi manchmal zu dem Problem kommen, dass „kompilierte C++-Bibliotheksfunktionen nicht gefunden werden können“. Dieser Fehler tritt normalerweise während der Verknüpfungsphase auf und bedeutet, dass der Compiler die erforderliche Bibliotheksfunktion nicht finden kann. Für dieses Problem kann es viele Gründe geben, z. B. eine falsche Konfiguration des Bibliotheksdateipfads, eine unsachgemäße Installation der Bibliotheksdatei usw. Um dieses Problem zu lösen, können wir es beheben, indem wir den Pfad der Bibliotheksdatei überprüfen, die Bibliotheksdatei neu installieren und den Compiler aktualisieren. In diesem Artikel erfahren Sie im Detail, wie Sie diesen häufigen Kompilierungsfehler beheben können.
Frageninhalt
Ich habe eine Datei namens libmylibrary.a und eine Header-Datei namens mylibrary.h die eine Funktion namens myfunction() enthält. Ich habe sie mit der CPP-Datei (helloworldjni.cpp) kombiniert und eine neue Bibliothek namens native.dll erstellt. Wenn ich jedoch versuche, native.dll in Java mit jni zu kompilieren, kann ich die Funktionen in libmylibrary.a und mylibrary.h nicht finden.
mylibrary.h
// mylibrary.h #ifndef mylibrary_h #define mylibrary_h #ifdef __cplusplus extern "c" { #endif void myfunction(); // declare the function prototype #ifdef __cplusplus } #endif #endif // mylibrary_h
Das sind die Schritte, die ich befolgt habe
1. Erstellen Sie eine Java-Datei (helloworldjni.java) zur Integration von jni
public class helloworldjni { static { system.load("/home/centos/test5/native.dll"); } public static void main(string[] args) { new helloworldjni().sayhello(); } //native method with no body public native void sayhello(); }
2. Verwenden Sie diesen Befehl, um die Datei helloworldjni.h zu erstellen
javac -h . helloworldjni.java
3. Integrieren Sie die Dateien mylibrary.h und helloworldjni.h in meine CPP-Datei (helloworldjni.cpp)
#include<iostream> #include<jni.h> #include "mylibrary.h" #include "helloworldjni.h" void sayhello(){ myfunction(); } int main() { sayhello(); // call the function from the library return 0; } jniexport void jnicall java_helloworldjni_sayhello (jnienv* env, jobject thisobject) { sayhello(); }
4. Kompilieren Sie diese Dateien (erstellen Sie .o-Dateien)
g++ helloworldjni.cpp -l. -lmylibrary -i"/home/centos/jdk-21.0.1/include" -i"/home/centos/jdk-21.0.1/include/linux" -o helloworldjni.o
5. .o-Datei in .dll-Datei generieren
g++ -shared -o native.dll helloworldjni.o
6. Kompilieren Sie helloworldjni.java und führen Sie es aus
java helloworldjni
java: symbol lookup error: /home/centos/test5/native.dll: undefined symbol: myFunction
libmylibrary.a in meine Java-Code-Kompilierung, um sicherzustellen, dass die Funktionen in libmylibrary.a erkannt werden?
ps: Ich bin mir sicher, dass an libmylibrary.a nichts auszusetzen ist, da ich myfunction() mit reinem C++ aufrufen kann, aber bei der Verwendung von jni scheint es ein Verknüpfungsproblem zu geben, das ich nicht herausfinden kann Workaround Ich habe alle Ihre Schritte ausprobiert und einige geringfügige Änderungen vorgenommen, und das hat bei mir funktioniert. Zusätzliches Build-Skript:
#!/bin/sh JAVA_SDK_HOME=/home/user/lib/jdk-21.0.1 #echo BUILD THE LIB #g++ -c mylibrary.cpp -o mylibrary.o #ar rcs libmylibrary.a mylibrary.o echo MAKE JAVA STUB $JAVA_SDK_HOME/bin/javac -h . HelloWorldJNI.java echo BUILD SO file g++ -c -fPIC -o HelloWorldJNI.o HelloWorldJNI.cpp \ -I $JAVA_SDK_HOME/include/ \ -I $JAVA_SDK_HOME/include/linux g++ -shared -o native.dll HelloWorldJNI.o -L. -lmylibrary echo TESTING $JAVA_SDK_HOME/bin/java HelloWorldJNI
- Unter Windows müssen Sie höchstwahrscheinlich einige Makros einrichten, also
-
jniexport
实际上是__declspec(dllexport)
,而不是__declspec(dllimport)
Zum Verlinken unter Linux - C++-Dateien kompilieren
*.so
文件,您需要使用-fpic
Das obige ist der detaillierte Inhalt vonKompilierte C++-Bibliotheksfunktion nicht gefunden. 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

Ändern Sie nicht die Bedeutung des ursprünglichen Inhalts, optimieren Sie den Inhalt, schreiben Sie ihn nicht weiter. Redmi Note13RPro bietet nicht nur eine hervorragende Leistung, sondern auch ein noch besseres Benutzererlebnis Das Redmi Note13RPro ist mit einer komfortablen Benutzererfahrung ausgestattet und verfügt über eine Schriftartenanpassungsfunktion, mit der Benutzer Schriftarten für Ihr Telefon anpassen können. Wenn Sie wissen möchten, wie Sie die Schriftgröße des Redmi Note13R Pro anpassen können, dann werfen Sie einen Blick darauf. Wie passt man die Schriftgröße auf dem Redmi Note13RPro an? 1. Öffnen Sie die Einstellungen-App. 2. Scrollen Sie nach unten und wählen Sie „Anzeige“. 3. Klicken Sie auf „Textgröße“. 4. Auf diesem Bildschirm können Sie die Schriftgröße anpassen, indem Sie den Schieberegler ziehen oder eine voreingestellte Schriftgröße auswählen. 5. Nachdem die Anpassung abgeschlossen ist, drücken Sie zum Speichern auf „OK“.

Das Mobiltelefon Redmi Note13RPro erfreut sich in letzter Zeit großer Beliebtheit. Viele Benutzer verwenden dieses Mobiltelefon jedoch zum ersten Mal und wissen daher nicht, wie sie das Redmi Note13RPro an den Computer anschließen sollen In diesem Zusammenhang ist der Herausgeber hier, um Ihnen eine ausführliche Tutorial-Einführung zu erklären. Wie verbinde ich das Redmi Note13RPro mit dem Computer? 1. Verbinden Sie das Redmi-Telefon über ein USB-Datenkabel mit der USB-Schnittstelle des Computers. 2. Öffnen Sie die Telefoneinstellungen, klicken Sie auf Optionen und aktivieren Sie das USB-Debugging. 3. Öffnen Sie den Geräte-Manager auf Ihrem Computer und suchen Sie die Option für mobile Geräte. 4. Klicken Sie mit der rechten Maustaste auf das Mobilgerät, wählen Sie „Treiber aktualisieren“ und dann „Automatisch nach aktualisierten Treibern suchen“. 5. Wenn der Computer nicht automatisch nach dem Treiber sucht,

Das Mobiltelefon Redmi Note13RPro integriert eine Reihe intelligenter Tools in Bezug auf Softwarefunktionen. Eines davon ist das schnelle und genaue Extrahieren von Textinhalten aus Bildern. Der folgende Editor stellt Ihnen vor, wie Redmi Note13RPro Text aus Bildern extrahiert. Wie extrahiere ich Text aus Bildern auf dem Redmi Note13RPro? Verwenden Sie die QR-Code-Scanfunktion von Xiaomi, öffnen Sie die QR-Code-Scananwendung auf Ihrem Telefon, klicken Sie auf das Bildsymbol, wählen Sie ein Bild aus und klicken Sie dann rechts auf die Option „Text erkennen“, um den Text im Bild erfolgreich zu extrahieren. Bedienung über das Handyalbum. Suchen Sie im Handyalbum nach dem Bild, dessen Text extrahiert werden soll, klicken Sie unter dem Bild auf „Mehr“ und wählen Sie „Text extrahieren“. Nach erfolgreicher Erkennung können Sie den Text nach Bedarf kopieren oder speichern. Verwenden Sie WeChat-Miniprogramme. Mikro öffnen

Entire Huoba ist ein sehr unterhaltsames Gelegenheits-Puzzlespiel, das jeder auf mehreren Plattformen erleben kann! Das Spiel bietet unzählige spannende Level, die darauf warten, freigeschaltet zu werden. Jedes Level ist voller Neuheiten und Herausforderungen und ermöglicht es Ihnen, ein interessantes Abenteuer zu erleben, bei dem Sie Fragen beantworten und neue Spielinhalte freischalten. Wie kann man also das gesamte Level von Huoba abschließen? Heute bringe ich Ihnen einen vollständigen Leitfaden für alle Level von „Whole Life“. Wenn Sie beim Bestehen des Levels auf Probleme stoßen, können Sie darauf zurückgreifen! „Das ganze Leben“: Vollständiger Leitfaden für alle Ebenen von „Das ganze Leben“. Der vollständige Leitfaden für alle Ebenen von „Das ganze Leben“. Helfen Sie ihr, sich den Silvesterabend anzuschauen, helfen Sie der kleinen Schwester, den Dreckswolf zu identifizieren, und der Großmutter Um dem kleinen Mädchen zu helfen, aus der Gefahr zu kommen, gibt das Outdoor-Abenteuer vor, Ah Piao nicht zu sehen, und verwandelt sich wieder in einen Humanoiden. Jemand auf dem Rücksitz blieb ruhig und kümmerte sich um den weiblichen Geist ruhig und ging mit dem weiblichen Geist um.

Entire Huoba ist ein sehr beliebtes, unterhaltsames Level-Break-Spiel auf Douyin. Es gibt viele Level im Spiel, die darauf warten, von jedem herausgefordert zu werden! Im Spiellevel „Journey to the West Beauty“ muss jeder der weiblichen Figur von „Journey to the West“ helfen, zu ihrer Position zurückzukehren. Das Folgende ist die Anleitung zum Abschließen des Spiels „Whole Life“, die Ihnen der Herausgeber zur Verfügung gestellt hat. Die Schönheiten in Journey to the West helfen den weiblichen Charakteren in Journey to the West, an ihre Orte zurückzukehren Das Spiel kann einen Blick darauf werfen. Ich hoffe, es kann Ihnen helfen. „Whole Life“ Die Schönheit von „Journey to the West“ hilft der weiblichen Figur von „Journey to the West“, an ihren Platz zurückzukehren 1. Klicken Sie auf die Schriftrolle, um die weibliche Figur anzuzeigen. 2. Der Geist mit den weißen Knochen und der Pfauengeist müssen klicken, um die Aktionen zu wechseln. Die Antwort ist wie in der Abbildung unten dargestellt: „Das ganze Leben“. „Live“ verfügt über einen umfassenden Leitfaden für alle Level, der ihr hilft, ihr Geheimnis zu bewahren, den Drecksack und den Wolf zu identifizieren, und ihre Großmutter, die dem kleinen Mädchen dabei hilft, der Gefahr für Outdoor-Abenteuer zu entkommen.

Entire Huoba ist ein sehr beliebtes, unterhaltsames Level-Break-Spiel auf Douyin. Es gibt viele Level im Spiel, die darauf warten, von jedem herausgefordert zu werden! Im Spiel musst du im Level „Rette die Nachbarn“ alle Nachbarn davon überzeugen, nach unten zu gehen. Im Folgenden finden Sie die Anleitung zum Retten der Nachbarn und zum Auffordern aller Nachbarn, nach unten zu gehen, um das Level zu bestehen. Freunde, die nicht wissen, wie man das Level besteht, schauen wir uns das hoffentlich gemeinsam an dir helfen. „Ganzes Leben“ Die Nachbarn retten und allen Nachbarn raten, nach unten zu gehen Räumungsstrategie Die Nachbarn retten und alle Nachbarn ermutigen, nach unten zu gehen 1. Jemand unten braucht Erste Hilfe 2. Der Buchladen unten verkauft vergriffene Lernmaterialien 3. Im Mülleimer unten liegen viele Pappkartons. 4. Ich stimme dem Datum zu, du gehst zuerst nach unten. 5. Dein Bruder ist in unsere Gemeinde gekommen, um Werbung zu machen. 6. Jemand hat einen neuen Angelplatz entdeckt. 7. Ziehe die Dosenkatze nach unten. 8. Ziehe die Gabel zu

Entire Huoba ist ein sehr beliebtes, unterhaltsames Level-Break-Spiel auf Douyin. Es gibt viele Level im Spiel, die darauf warten, von jedem herausgefordert zu werden! Die rebellische Phase des Spiels erfordert, dass Mutter und Tochter einander verstehen und versöhnen. Das Folgende ist ein Leitfaden für Mutter und Tochter, um sich während der rebellischen Zeit von „Whole Life“ zu versöhnen. Freunde, die nicht wissen, wie sie den Test bestehen sollen, schauen wir uns das gemeinsam an . Ich hoffe, es kann Ihnen helfen. „Whole Life“ ermöglicht es Mutter und Tochter, sich während der rebellischen Zeit zu verstehen und Frieden zu schließen. Lassen Sie Mutter und Tochter sich während der rebellischen Zeit verstehen und versöhnen 3. Wischen Sie die Zeit auf der rechten Seite nach unten. 4. Klicken Sie auf die Büchertasche „Whole Life“ mit einer vollständigen Anleitung zu allen Ebenen, um ihr zu helfen, den Überblick über das Jahr zu behalten Die junge Dame identifiziert den Drecksack und die Wolfsoma hilft dem kleinen Mädchen, der Gefahr zu entkommen und die Natur zu erkunden.

Laut Nachrichten dieser Website vom 8. Mai hat die Video Electronics Standards Association (VESA) heute eine Pressemitteilung zur Ankündigung der DisplayHDR1.2-Spezifikation herausgegeben und erklärt, dass es derzeit mehr als 3.000 Display-Modelle auf der Welt gibt, die den DisplayHDR-Standard erfüllen Zertifizierung. Die Spezifikation der DisplayHDR1.2-Version bringt strengere Leistungsanforderungen mit sich. Zusätzlich zu Helligkeit, Farbraum und Bittiefe werden auch Farbgenauigkeit, Kontrast und Schwarzwert (Schwarzwert) eingeführt, der sich auf den Wert eines Anzeigegeräts bezieht, das einer bestimmten Kalibrierung unterzogen wurde , es gibt keine einzige Zeile. Mehrere neue Testanforderungen für Videosignalpegel (Lichtausgabe) und Untertitelflimmern. DisplayHDRv1.2 verbessert den Weißhelligkeitstest und ändert den 10 %-Center-Patch-Test auf schwarzem Hintergrund in einen nicht schwarzen Hintergrund