0

PocoNetSSL を使用して HTTPS エンドポイント経由でデータを取得する dll を作成しています。古いバージョンの Mono を実行する Unity で C# 経由でその dll を呼び出す必要があります。

mingw-w64 シェルを使用して 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 を開けないことです。null ポインターが表示されますが、依存関係の問題だと思います。これが私のビルド コマンドと依存関係ウォーカーのスナップショットです。ここに欠けているものはありますか?私はこれを行うことができるはずだと思いますが、多分そうではありませんか?

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.

ここに画像の説明を入力

4

1 に答える 1

0

動的ライブラリ コードの読み込みが正しいと仮定すると、アプリはビルドされたバージョンとは異なるバージョンのopenssldllを読み込もうとしている可能性が非常に高くなります。Poco

ではmsys2、次の方法で動的ライブラリの依存関係を確認できます。

ldd /mingw64/bin/libPocoNetSSL.dll

これは以下に依存します:

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

これは依存関係ウォーカーで見られるものですか?

この問題の最善の回避策は、上記の dll を実行可能ファイルがあるフォルダーにコピーし、常にソフトウェアと共に配布することです。

于 2015-11-15T12:08:25.043 に答える