c++ - 编译 c++ 代码以便在 django 项目中使用它时出错
问题描述
最近我为了一些图像处理的目的启动了一个 Django 项目。由于某些性能原因,我用 C++ 编写了一个函数并独立测试它。现在我想在我的 python 代码中调用那个 c++ 函数。但是当我用这个指令编译它时:
g++ a.cpp `pkg-config --cflags --libs opencv` -shared -o program.so
发生此错误:
/usr/bin/ld: /tmp/ccvIlzBz.o: relocation R_X86_64_PC32 against symbol `_ZNK2cv7MatSizeclEv' can not be used when making a shared object; recompile with -fPIC
根据这个错误,如果用 -fPIC 标志替换 -shared,它会编译,但在我的 python 代码中,发生了这个错误:
cannot open shared object file:
这意味着它没有正确编译。
最后我用这个指令构建了 c++ 程序:
g++ a.cpp `pkg-config --cflags --libs opencv` -shared -fPIC -lm -o program.so
但是当我执行我的python代码并在该c ++代码中调用一个函数(sample_func)时,它给出了这个错误:
../program.so: undefined symbol: sample_func
我该如何解决这个问题?
解决方案
推荐阅读
- java - 如何在片段中加载新活动而不会丢失底部导航栏
- kubernetes - 如何在旅途中启用功能门?
- c++ - 如何从数组初始化对象数组?
- c# - Asp.Net Core 是否跨请求保留 CallContext?
- java - 如何使用 mockito 模拟复杂的查询条件
- python - 如何使用 z3 Solver 解决柯克曼的女学生问题?
- php - findBy() 返回 null 但 db 已满
- angularjs - “无法在 'CSSStyleDeclaration' 上设置索引属性:不支持索引属性设置器。” 在农业网格中
- jquery - 如何选择要显示和存储为 cookie 或 localstorage 的 div?
- git - 如何在不丢失分支的情况下将 mercurial 存储库转换为 git 存储库?