[問題]c++ virtual 問題
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
g++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
N/A
問題(Question):
https://www.sendspace.com/file/7gq1j2 這是我程式碼地方
我是在把一個 繼承class 打包 so檔案 之後透過 dlopen load 這個so
如果我把 triangle.hpp 裡面的 virtual void getaa() const;
的virtual拿掉會編譯階段的link 錯誤無法編譯過
但是我把這程式碼單獨寫在同個檔案, 不用so + dlopen 是正常可以編譯過
不懂為什麼 so 方式去dlopen link 階段會錯
錯誤訊息如下:
g++ -Wall -pedantic -ggdb3 -O0 -std=c++11 -shared -fPIC -o triangles.so
triangle.cpp
g++ -Wall -pedantic -ggdb3 -O0 -std=c++11 main.cpp -o main -ldl -lpthread
/tmp/ccB1oVpb.o: 於函式 main:
dlopen_test/main.cpp:42: 未定義參考到 triangle::getaa() const
collect2: error: ld returned 1 exit status
Makefile:9: recipe for target 'a.out' failed
make: *** [a.out] Error 1
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.181.225.221
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1532692962.A.FC4.html
※ 編輯: gigigigi (175.181.225.221), 07/27/2018 20:23:45
推
07/28 01:55,
7年前
, 1F
07/28 01:55, 1F
推
07/28 11:22,
7年前
, 2F
07/28 11:22, 2F
→
07/28 11:22,
7年前
, 3F
07/28 11:22, 3F
→
07/28 11:23,
7年前
, 4F
07/28 11:23, 4F
→
07/28 11:23,
7年前
, 5F
07/28 11:23, 5F
→
07/28 11:23,
7年前
, 6F
07/28 11:23, 6F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章