相关疑难解决方法(0)

如何检查DLL依赖?

有时当我做一个小项目时,我不够小心,并且意外地为我不知道的DLL添加依赖项.当我将此程序发送给朋友或其他人时"它不起作用",因为"某些DLL"丢失了.这是因为程序可以在我的系统上找到DLL,但不能在他们的系统上找到.

是否有程序/脚本可以扫描可执行文件的DLL依赖项或在"干净的"无DLL环境中执行程序以进行测试以防止这些oops情况?

windows dll dependencies

144
推荐指数
9
解决办法
21万
查看次数

C++ Visual Studio:使用pragma注释进行链接

我遇到了一段使用#pragma comment(lib,"libraryname")的代码.

为什么这种用法与仅从属性菜单链接库相反?在什么情况下需要这种用法?我在使用C++ Visual Studio 2010的 Windows中.

很高兴看到一个需要这种用法的例子.

c++ dynamic-linking visual-studio-2010 static-linking

15
推荐指数
3
解决办法
3万
查看次数

是否可以将Cython代码编译为dll,以便C++应用程序可以调用它?

我有一个C++程序,它有一些插件结构:当程序启动时,它在插件文件夹中查找带有某些导出函数签名的dll,例如:

void InitPlugin(FuncTable* funcTable);
Run Code Online (Sandbox Code Playgroud)

然后程序将调用dll中的函数来初始化并将函数指针传递给dll.从那时起,dll可以与程序通信.

我知道Cython允许你在Python中调用C函数,但我不确定我是否可以编写一个Cython代码并将其编译为dll,这样我的C++程序就可以用它进行初始化.一个示例代码会很棒.

c++ python dll plugins cython

6
推荐指数
2
解决办法
1195
查看次数

_ctypes.cpython-39-x86_64-linux-gnu.so:未定义符号:使用 dlopen 加载的嵌入式 Python 中的 PyFloat_Type

我在 ubuntu 20.04 中使用嵌入式 Python (3.9) 并尝试导入产生错误的 ctypes _ctypes.cpython-39-x86_64-linux-gnu.so: undefined symbol: PyFloat_Type

我正在编译一个共享对象,它是使用 动态加载的dlopen()

CMake用于构建共享对象。我像这样声明 Python3 依赖关系: find_package(Python3 REQUIRED COMPONENTS Development Development.Embed)并使用链接target_link_libraries(${target_name} Boost::filesystem Python3::Python)

如果我理解正确,这会告诉 CMake 直接链接到libpython3.9.so(我也尝试明确声明链接到libpython3.9.so,但这并没有解决问题)。我确实看到libpython3.9.so有出口PyFloat_Type,但_ctypes.cpython-39-x86_64-linux-gnu.so没有看到。

导入只需通过以下PyRun_SimpleString()函数即可完成:PyRun_SimpleString("import ctypes")

我应该声明,我在网上看到了一些解决方案,但没有一个有效(例如导出LD_FLAGS="-rdynamic",但也没有帮助)。

我还应该指出,使用解释器(python3.9)导入效果很好。

以下是 CMake 生成的构建命令: /usr/bin/c++ -fPIC -g -Xlinker -export-dynamic -shared -Wl,-soname,mytest.python3.so -o mytest.python3.so CMakeFiles/mytest.python3.dir/[mydir]/[myobjects].o /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.71.0 /usr/lib/x86_64-linux-gnu/libpython3.9.so /usr/lib/x86_64-linux-gnu/libpython3.9.so

感谢您提前提供任何帮助!

python ubuntu ctypes python-embedding

4
推荐指数
1
解决办法
7855
查看次数