我已经看过几个帖子说明了同样的错误,但在这些帖子中查找并尝试答案并没有帮助.我想知道是否有人可以看看这个并看看是否有东西弹出来了?
我正在为CPP应用程序构建Python扩展,并且在编译和构建步骤期间没有错误.但是,当我导入模块时,我得到标题中提到的错误.其他stackoverflow答案声称这是因为在编译和使用不同的解释器时与一个库链接.据我所知,我使用相同的Python解释器.我现在要描述为什么我认为我在链接过程和解释器中使用相同的Python.
这是我用来构建Python扩展的命令
$ gcc -shared helicsPYTHON_wrap.c $(python-config3 --includes) -I/path/to/helics-0.9/includes -L/path/to/helics-0.9/lib -lhelicsSharedLib -L$(python3-config --prefix)/lib -lpython3.6m -o _helics.so
$ which python3-config
/Users/$USER/miniconda3/bin/python3-config
$ python3-config --prefix
/Users/$USER/miniconda3
Run Code Online (Sandbox Code Playgroud)
如果我尝试导入导入共享库的python文件,则会抛出致命错误.如果我otool -L在共享库上使用,我会得到以下内容.这是我期望得到的.
$ otool -L _helics.so
_helics.so:
@rpath/libhelicsSharedLib.dylib (compatibility version 0.0.0, current version 0.0.0)
@rpath/libpython3.6m.dylib (compatibility version 3.6.0, current version 3.6.0)
/usr/local/opt/zeromq/lib/libzmq.5.dylib (compatibility version 7.0.0, current version 7.3.0)
libboost_program_options.dylib (compatibility version 0.0.0, current version 0.0.0)
libboost_filesystem.dylib (compatibility version 0.0.0, current version 0.0.0)
libboost_system.dylib (compatibility version 0.0.0, current version 0.0.0)
libboost_date_time.dylib (compatibility version 0.0.0, …Run Code Online (Sandbox Code Playgroud) 使用 LLVM 6.0.0 版的 C++ 编译器时,以下代码
bool isEven(int n) {
bool ret = true;
for (int i = 0; i < n; i ++) {
ret = !ret;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
发出 LLVM IR
define zeroext i1 @_Z6isEveni(i32) local_unnamed_addr #0 !dbg !7 {
call void @llvm.dbg.value(metadata i32 %0, metadata !14, metadata !DIExpression()), !dbg !18
call void @llvm.dbg.value(metadata i8 1, metadata !15, metadata !DIExpression()), !dbg !19
call void @llvm.dbg.value(metadata i32 0, metadata !16, metadata !DIExpression()), !dbg !20
%2 = icmp …Run Code Online (Sandbox Code Playgroud) jeromq 是 libzmq 的 Java 实现。我有一个从 jeromq 源创建的 .jar 文件。但是,我无法从 MATLAB 调用 jeromq 中的类。我已经使用过 addjavaclasspath,addjavalibrarypath但仍然无法让它工作。有没有人在 MATLAB 中有一个简单的工作示例?