poco netssl dll依赖项

时间:2015-11-15 05:25:18

标签: dll mono dllimport poco-libraries msys2

我正在构建一个dll来使用PocoNetSSL通过HTTPS端点获取一些数据。我需要通过Unity中的C#调用该DLL,它运行旧版Mono。

我正在使用mingw-w64 shell来构建我的dll。通过包管理器pacman可以获得一个Poco库包,我正在使用它。

$ pacman -Qs 'poco'
local/mingw-w64-x86_64-poco 1.6.0-2
    POrtable COmponents C++ Libraries (mingw-w64)

我可以构建一个可执行文件,它可以构建精细的&运行良好点击https端点。我已经在某处安装了openssl,或者可能已经安装了mingw。

我的问题是我无法使用LoadLibrary打开dll。我得到一个空指针,我猜它是一个依赖问题。这是我的构建命令和依赖性walker的快照。这里有什么我想念的吗?我想我应该可以做到这一点,但也许不是吗?

sburke@sburke-pc MINGW64 ~/sandbox/hitaws
$ scons
scons: Reading SConscript files ...
msys
scons: done reading SConscript files.
scons: Building targets ...
g++ -o gdoaws.os -c -Wall -DPOCO_WIN32_UTF8 -I/mingw64/include gdoaws.cpp
g++ -o gdoaws.dll -Wl,-no-undefined -shared -Wl,--out-implib=libgdoaws.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive gdoaws.os -Wl,--no-whole-archive -L/mingw64/lib -lPocoNetSSL.dll -lPocoNet.dll -lPocoUtil.dll -lPocoFoundation.dll
scons: done building targets.

enter image description here

1 个答案:

答案 0 :(得分:0)

假设您加载动态库代码是正确的,那么您的应用很可能会尝试加载openssl dll的不同版本而不是Poco

msys2中,您可以通过以下方式检查动态库依赖项:

ldd /mingw64/bin/libPocoNetSSL.dll

取决于:

LIBEAY32.dll => /mingw64/bin/LIBEAY32.dll 
SSLEAY32.dll => /mingw64/bin/SSLEAY32.dll

这是你在依赖步行者中看到的吗?

此问题的最佳解决方法是将上面的dll复制到可执行文件所在的文件夹中,并始终使用您的软件进行分发。