我在 Windows 上編譯多個 C++ 有一點問題。我在 C++ 中實現了四個類,用于使用 gmp 進行密碼學。我想用 ctypes 從 Python 調用它們。extern我用關鍵字寫了一個cpp文件:#include "integer.h"#include "modular_number.h"#include "padic_number.h"#include "rational_number.h"extern "C" { __declspec(dllexport) ModNum* newModNum(const char * n, const char * p) { return new ModNum(Integer(n), Integer(p)); } __declspec(dllexport) const char* getModValue(const ModNum& mod){ return mod.getValue().getValue(); } __declspec(dllexport) RationalNum* newRationalNum(const char* mpq) { return new RationalNum(mpq); } __declspec(dllexport) const char* getRationalValue(const RationalNum& rat){ return rat.getValue(); } __declspec(dllexport) PadicNum* newPadicNum(const char* n, const char* base) { return new PadicNum(Integer(n), Integer(base)); } __declspec(dllexport) const char* getPadicValue(const PadicNum& padic){ return padic.getValue().getValue(); }}我編譯了我的文件:mingw32-g++ -fexceptions -g -fexpensive-optimizations -flto -O3 -Weffc++ -Wextra -Wall -std=c++14 -fPIC -Og -IC:\MinGW\include -flto -s -lgmp -lmpfr -lpthread -c -fPIC *.cpp -I"C:\Program Files\Python38-32\include" -I"C:\Program Files\Python38-32\libs"mingw32-g++.exe -shared -Wl,-dll -o numeric.dll *.o -lgmp -lmpfr -lgmpxx -static但是當我在 Python 中使用這些命令時:import ctypes;x = ctypes.DLL("./numeric.dll");該變量x不具有以下功能:newModNum,getModValue等...誰能告訴我我做錯了什么?我沒有錯誤,我不明白。我的其他文件是帶有頭文件和實現的常見 C++ 文件。提前致謝,祝您有美好的一天!
如何編譯多個 C++ 文件以將它們與 Python ctypes 一起使用?
慕田峪7331174
2022-07-26 09:31:03