从 python 调用 openMP 共享库时未定义 opnMP 函数
Undefined opnMP function when calling a openMP shared library from python
我想用 openMP 编写一个小的 c++ - 代码,将其编译为 .so 并从 python 使用调用它。 C++ 源代码是 -
from ctypes import *
import ctypes
c_lib = cdll.LoadLibrary("libtest.so")
c_lib.openmp_test()
而cpp文件如下-
#include<iostream>
#include<omp.h>
void openmp_test()
{
std::cout<<"in c++";
int threads = omp_get_max_threads();
std::cout<<threads;
}
我使用 -
创建 .so 文件
g++ -c -fPIC -fopenmp test.cpp -o test.o
g++ test.o -shared -o libtest.so
但是 运行 python 文件给我错误 -
undefined symbol: omp_get_max_threads
我做错了什么?
提前致谢
您应该将库 omp 添加到程序的库依赖项中。
g++ test.o -shared -lomp -o libtest.so
我为您提供完整的解决方案:
#include<iostream>
#include<omp.h>
extern "C"
{
void openmp_test()
{
std::cout<<"in c++";
int threads = omp_get_max_threads();
std::cout<<threads;
}
}
之后你应该创建共享库:
g++ -c -fPIC -fopenmp test.cpp -o test.o
g++ test.o -shared -lomp -o libtest.so
然后 运行 你的 python 脚本当然你应该提供你的库的完整路径。
我想用 openMP 编写一个小的 c++ - 代码,将其编译为 .so 并从 python 使用调用它。 C++ 源代码是 -
from ctypes import *
import ctypes
c_lib = cdll.LoadLibrary("libtest.so")
c_lib.openmp_test()
而cpp文件如下-
#include<iostream>
#include<omp.h>
void openmp_test()
{
std::cout<<"in c++";
int threads = omp_get_max_threads();
std::cout<<threads;
}
我使用 -
创建 .so 文件g++ -c -fPIC -fopenmp test.cpp -o test.o
g++ test.o -shared -o libtest.so
但是 运行 python 文件给我错误 -
undefined symbol: omp_get_max_threads
我做错了什么? 提前致谢
您应该将库 omp 添加到程序的库依赖项中。
g++ test.o -shared -lomp -o libtest.so
我为您提供完整的解决方案:
#include<iostream>
#include<omp.h>
extern "C"
{
void openmp_test()
{
std::cout<<"in c++";
int threads = omp_get_max_threads();
std::cout<<threads;
}
}
之后你应该创建共享库:
g++ -c -fPIC -fopenmp test.cpp -o test.o
g++ test.o -shared -lomp -o libtest.so
然后 运行 你的 python 脚本当然你应该提供你的库的完整路径。