我正在使用Python的ctypes
与一些C++
代码进行交互,并添加了一个在编译时似乎无法链接的依赖项。 (此依赖关系适用于除此extern "C" {...}
代码之外的任何用途。)
我将C++
添加到以下_extern.cpp
文件中:
// cellComplex_extern.cpp
#include "../../../cell.hpp"
extern "C" {...}
头文件cell.hpp
包含我的依赖项,这是问题开始的地方。 编译器(当然)找不到"interval.hpp
或hess_ari.hpp
,因为在下面的Makefile中我没有建立链接...
//cell.hpp
#include "interval.hpp"
#include "hess_ari.hpp"
你可以看到:
# Makefile
export CXSCINCDIR = ${HOME}/local/cxsc/include
export CXSCLIBDIR = ${HOME}/local/cxsc/lib
CXXINC = -I$(CXSCINCDIR)
LIBPATHS = -L$(CXSCLIBDIR)
CXXFLAGS = $(CXXINC)
cellComplex_extern:
g++ -c -fPIC cellComplex_extern.cpp -o cellComplex_extern.o
g++ -shared -Wl -o cellComplex_lib.so cellComplex_extern.o
为什么我没有建立链接?因为我知道怎样做的唯一方法就是
g++ -I$(CXSCINCDIR) cellComplex_extern.cpp -o cellComplex_extern.o -L$(CXSCLIBPATHS) -lcxsc
由于我在main
中没有cellComplex_extern.cpp
功能,因此无效。
任何提示?
编辑:好的,答案如下,这是我的新makefile,效果很好:
export CXSCINCDIR = ${HOME}/local/cxsc/include
export CXSCLIBDIR = ${HOME}/local/cxsc/lib
export CXX = g++
CXXINC = -I$(CXSCINCDIR) #-I$(GSLINCDIR)
LIBPATHS = -L$(CXSCLIBDIR) #-L$(GSLLIBDIR)
CXXFLAGS = $(CXXINC) #$(CXXOPTS)
cellComplex_extern:
g++ $(CXXINC) -c -fPIC cellComplex_extern.cpp -o cellComplex_extern.o
g++ $(CXXFLAGS) -shared -Wl -o cellComplex_lib.so cellComplex_extern.o $(LIBPATHS) -lcxsc
答案 0 :(得分:1)
我不确定我是否正确理解了您的问题,但是您无法在
中提供编译器的包含路径g++ -I$(CXSCINCDIR) -c -fPIC cellComplex_extern.cpp -o cellComplex_extern.o