error: undefined reference collect
作者:金良(golden1314521@gmail.com) csdn博客:http://blog.csdn.net/u012176591 编译动态链接库时,出现了这样的错误: error: undefined reference to 'xxx)' collect2: ld returned 1 exit status 属性1. 我能肯定这与要调用动态库的Java文件没有任何
作者:金良(golden1314521@gmail.com) csdn博客:http://blog.csdn.net/u012176591

编译动态链接库时,出现了这样的错误:
error: undefined reference to 'xxx)' collect2: ld returned 1 exit status
属性1.
我能肯定这与要调用动态库的Java文件没有任何关系,因为我把Java文件删除然后重新编译也是这样的错误。
属性2.
我也能肯定这绝不是因为我没有把要用到的头文件包括进来,而且我试着将另一个函数的头文件注释掉,提示的错误是:
error: 'xxxxx' was not declared in this scope
属性3.
当我把函数名称更改使其前后名称不一致时也提示错误:
error: 'xxxxx' was not declared in this scope
属性4.
甚至我把直接把这个函数写进要调用它的文件里,仍然是这样的错误。
属性5.
已确定不是Android.mk文件的问题
什么情况下会产生“error: undefined reference to 'xxx)' collect2: ld returned 1 exit status“的错误呢?不明白这个函数为什么这么特殊,唯独它出现这样的错误。
明明定义了这个函数,却出现了“error: undefined reference to”的错误?怪哉
方案1.
在网上查到这样一种解决方案,它是这样描述的:
在android.mk中加入 LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
也就是说,对于找不到的函数,编译器将忽略它。
我勒个去,我写这个函数就是要它干活的,你忽略它,虽然编译时过关了,但是我调用这个函数时不还是找不到吗?我还不如直接把这个函数删掉。
方案2.
经过我仔细核对,层层排除,终于发现了问题所在。再次还原一下错误提示
in function render:/BitmapPlayerActivity.cpp:35: error: undefined reference to 'BrightnessFilter(unsigned short*, long, unsigned char)'
collect2: ld returned 1 exit status
make.exe: *** [obj/local/armeabi/libAVIPlayer.so] Error 1
同时贴出出现错误的函数所在的文件BitmapPlayerActivity.cpp:
#ifdef __ARM_NEON__ void BrightnessFilter( unsigned short* pixels, long count, unsigned char brightness) { //具体内容忽略 } static void neonBrightnessFilter( unsigned short* pixels, long count, unsigned char brightness) { //具体内容忽略 } #endif
你看出问题所在了吗?注意第01行和17行的宏#ifdef __ARM_NEON__与#endif,它们配合起来根据变量__ARM_NEON__之前是否被定义而选择编译它们之间的代码;不行的是,本工程中__ARM_NEON__未被定义,故函数BrightnessFilter(unsigned short*, long, unsigned char)未被编译,所以才出现了error: undefined reference的错误。
PS1.
需要注意的是,在同一个cpp文件里如果函数之间存在调用关系,一定要把被调用的函数写在要调用它的函数的前面,例如下面的文件编译时会提示如下错误:
jni/BrightnessFilter.cpp: In function 'void BrightnessFilter(short unsigned int*, long int, unsigned char)':
jni/BrightnessFilter.cpp:7:52: error: 'genericBrightnessFilter'was not declared in this scope
make.exe: *** [obj/local/armeabi/objs/AVIPlayer/BrightnessFilter.o] Error 1
BrightnessFilter.cpp:
#include "BrightnessFilter.h" void BrightnessFilter(unsigned short* pixels, long count, unsigned char brightness) { genericBrightnessFilter(pixels, count, brightness);//调用了genericBrightnessFilter(),但函数genericBrightnessFilter()在BrightnessFilter()函数之前并没有实现体,所以出错 } static void genericBrightnessFilter( unsigned short* pixels, long count, unsigned char brightness) { //函数体没有引用其他函数,具体内容略 }
PS2.
jni/Android.mk:11: *** commands commence before first target. Stop.
这是因为Android.mk中LOCAL_SRC_FILES 加载文件时斜杠后有空格,删除即可。在另一处也可能出现类似错误,请参看Android编译ffmpeg遇到的问题、解决方法、相关文件和编译全过程

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



PHP ist eine beliebte Webentwicklungssprache, die schon seit langem verwendet wird. Die in PHP integrierte PDO-Klasse (PHP Data Object) ist für uns eine gängige Möglichkeit, bei der Entwicklung von Webanwendungen mit der Datenbank zu interagieren. Ein Problem, auf das einige PHP-Entwickler jedoch häufig stoßen, besteht darin, dass sie bei Verwendung der PDO-Klasse zur Interaktion mit der Datenbank eine Fehlermeldung wie diese erhalten: PHPFatalerror:CalltoundefinedmethodPDO::prep

Axios wird häufig in Vue-Anwendungen verwendet. Axios ist ein Promise-basierter HTTP-Client, der in Browsern und Node.js verwendet werden kann. Während des Entwicklungsprozesses erscheint manchmal die Fehlermeldung „Uncaught(inpromise)Error: Requestfailedwithstatuscode500“. Für Entwickler kann diese Fehlermeldung schwer zu verstehen und zu lösen sein. In diesem Artikel wird dies untersucht

Lösen Sie das „error:incompletetypeisnotallowed“-Problem im C++-Code. Während des C++-Programmierungsprozesses treten manchmal einige Kompilierungsfehler auf. Dieser Fehler wird normalerweise durch die Arbeit mit einem unvollständigen Typ verursacht. In diesem Artikel wird die Ursache dieses Fehlers erläutert und verschiedene Lösungen bereitgestellt. Zunächst einmal: Ich

Lösung für „0271: Echtzeituhrfehler“, der nicht gestartet werden kann: 1. Drücken Sie F1 und verschieben Sie in der angezeigten Benutzeroberfläche die Optionsleiste zum dritten Element „Datum/Uhrzeit“. 2. Ändern Sie die Systemzeit manuell auf die aktuelle Uhrzeit einmal; 3. Drücken Sie F10 und wählen Sie im Popup-Dialogfeld „Ja“ aus. 4. Öffnen Sie das Notebook erneut, um es normal zu starten.

Lösen Sie das „error:expectedinitializerbefore'datatype‘“-Problem in C++-Code. Beim Schreiben von Code treten manchmal Kompilierungsfehler auf. Einer der häufigsten Fehler ist „error:expectedinitializerbefore‘datatype‘“. Dieser Fehler tritt normalerweise in einer Variablendeklaration oder Funktionsdefinition auf und kann dazu führen, dass das Programm nicht korrekt kompiliert werden kann oder

So lösen Sie PHPWarning:fopen():failedtoopenstream:Nosuchfileordirectory Bei der Verwendung von PHP-Entwicklung stoßen wir häufig auf einige Dateibetriebsprobleme, darunter „PHPWarning:fopen():failedtoopenstream:Nosuchfileordirectory“.

Beim Schreiben von Webanwendungen mit PHP wird häufig eine MySQL-Datenbank zum Speichern von Daten verwendet. PHP bietet eine Möglichkeit zur Interaktion mit der MySQL-Datenbank namens MySQLi. Bei der Verwendung von MySQLi wird jedoch manchmal eine Fehlermeldung angezeigt, wie unten gezeigt: PHPFatalerror:Calltoundefinedfunctionmysqli_connect() Diese Fehlermeldung bedeutet, dass PHP my nicht finden kann

Beim Schreiben von Code in PHP kann es zu der Fehlermeldung „Hinweis: Undefinierte Eigenschaft“ kommen. Dieser Fehler bedeutet, dass wir auf eine undefinierte Eigenschaft zugreifen, normalerweise weil die Eigenschaft im Code nicht initialisiert wurde. Wie kann man dieses Problem lösen? Hier sind einige mögliche Lösungen: Eigenschaften initialisieren Dies ist der einfachste Weg, dieses Problem zu lösen. Durch die explizite Initialisierung einer Eigenschaft im Code wird sichergestellt, dass sie vor der Verwendung definiert wird. Zum Beispiel: Klasse
