亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 cython 中訪問 C++ 模板類

在 cython 中訪問 C++ 模板類

浮云間 2023-10-26 15:39:37
我有一個名為的模板類,List在名為的文件中定義containers.h:#include <iostream>#include <vector>namespace containers {    template <class T> class List {        private:            std::vector<T> vector;        public:            List() {};            ~List() {};            void append(T* item) {                vector.push_back(*item);            }            void print_items() {                for ( T item : vector ) {                    std::cout << item << std::endl;                }            }    };}我正在嘗試使用以下代碼將此類導入 Cython main.pyx:#!python# cython: language_level = 3# distutils: language = c++cdef extern from "containers.h" namespace "containers":    cdef cppclass List[T]:        List() except +        void append(T *item)        void print_items()def test():    cdef List[int] *l = new List[int]()    cdef int i    for i in range(10):        l.append(&i)    l.print_items()這就是當我嘗試運行此代碼時發生的情況:>>> import mainTraceback (most recent call last):  File "<stdin>", line 1, in <module>ImportError: /home/arin/Desktop/Misc/test_cpp/main.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN10containers4ListIiEC1Ev為什么我會收到此錯誤以及如何修復它?
查看完整描述

1 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

這只是編譯時的一個愚蠢錯誤:在setup.py我傳遞"main.cpp"cythonize函數而不是"main.pyx",并且在編譯時并沒有導致錯誤,因為我有另一個名為main.cpp.



查看完整回答
反對 回復 2023-10-26
  • 1 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號