C++文件/項目,我有在Linux .o文件將如下的問題:鏈接的.o(C目標文件),在Linux上
我有Visual.cpp其調用函數ECL_Drawrect()這個函數定義爲:
#define ECL_Drawrect ECL_bDrawrect
在我Visual.cpp我還包括 「ecl.h」 爲:
#include "ecl.h"
int main() {
ECL_Drawrect (0,0,20,20,false);
return 0;
}
的問題是,該功能ECL_bDrawrect在ecl.o文件,我別知道如何鏈接它以使用上述功能。
經過一番研究,我想通了,並設置如下:
g++ Visual.cpp -o Visual /usr/include/ecl.o
的ecl.o路徑也incluced在我的項目,當我編譯我得到這個錯誤:
**** Build of configuration Debug for project Visual ****
make all
Building file: ../src/Visual.cpp
Invoking: GCC C++ Compiler
g++ -m32 -O0 -g3 -Wall -c -fmessage-length=0 /usr/include/ecl.o -MMD -MP -MF"src/Visual.d" -MT"src/Visual.d" -o "src/Visual.o" "../src/Visual.cpp"
g++: /usr/include/ecl.o: linker input file unused because linking not done
Finished building: ../src/Visual.cpp
Building target: Visual
Invoking: GCC C++ Linker
g++ -m32 -o "Visual" ./src/Visual.o
/usr/bin/ld: ./src/Visual.o: in function main:../src/Visual.cpp:7: error: undefined reference to 'ECL_bDrawrect'
collect2: ld returned 1 exit status
make: *** [Visual] Error 1
**** Build Finished ****
我不不知道鏈接是否正確?我如何以正確的方式鏈接這個ecl.o文件?
p/S:我在ubuntu 11.04 64位使用eclipse CDT,而ecl.o適用於32位,這就是爲什麼我必須將-m32添加到g ++。
您是否在「ecl.h」中聲明瞭ECL_bDrawrect?它來自C嗎? –
yes,it here: void ECL_bDrawrect(int x,int y,int w,int h,int f); – cppuser
WTH是你在'/ usr/include'中的'ecl.o'文件嗎? – paxdiablo