0
我正在嘗試爲一個相當大的項目編譯一個.so文件,並且遇到了這樣的問題,即任何文件中寫入的任何類,模板或其他文件都不在完成的.so文件中。如何確保模板類定義使其進入共享庫?
我所做的文件:
g++ -shared -fPIC -Wall filename1.cpp -o libfilename1.so
我就不告訴你了納米全力輸出,但所有的中定義的非模板函數有,沒有的模板功能,模板化課程或課程都在那裏。我在類聲明中嘗試使用__attribute__ ((visibility=("default")))
,但它似乎沒有做任何事情。
可能是因爲模板是*模板*而不是具體的類。以例如'std :: vector',它是一個模板。 'std :: vector'是一個具體的類。 –
模板必須實例化才能編譯。結論是你的共享庫中不能有模板。 – DeiDei
您的.so是否實例化了一些導出的模板函數? – em2er