2017-05-02 8 views
2

問題があります。mxe(x86_64-w64-mingw32.shared)を使用してWindows上でlinux上にWindowsアプリケーションをビルドしてリンクすると、リンクが動作していますよくその後、私はすべての便利なdllファイル(x64-msvcrt-ruby230.dllを除く、クロスコンパイル済みです)を貼り付けてコピーします。w10でクロスコンパイルができないlibpng16-16.dll

ワインで私のプログラムをテストしましたが、それはチャーミーのように機能しますが、Linuxバージョンとの違いはありません。私は私のテストVM(VirtualBox内にwindows10 64ビット版)にすべてをかけるいったんしかし、私はエラーメッセージが表示されます。

プロシージャエントリポイントinflateValidateがダイナミックリンクライブラリDに配置することができませんでした:\ libpng16-16.dll。

libpng16-16.dllがあり、私は(Linuxの場合)、それをobjectdumpとき:

objdumpの-x libpng16-16.dll | grepがそう明らかにシンボル__imp_inflateValidateが存在しているので、私は欠けているものがある

3a9f4  60 inflate 
3aa00  66 inflateEnd 
3aa10  69 inflateInit2_ 
3aa20  73 inflateReset 
3aa30  74 inflateReset2 
3aa40  80 inflateValidate 
[642](sec 1)(fl 0x00)(ty 20)(scl 3) (nx 0) 0x0000000000013be0 png_inflate_claim 
[654](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x0000000000014280 png_zlib_inflate 
[655](sec 1)(fl 0x00)(ty 20)(scl 3) (nx 0) 0x00000000000142d0 png_inflate.constprop.6 
[657](sec 1)(fl 0x00)(ty 20)(scl 3) (nx 0) 0x0000000000014680 png_inflate_read.part.3.constprop.8 
[3002](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x0000000000021b08 inflateReset2 
[3023](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x0000000000021b28 inflate 
[3081](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x0000000000021b00 inflateValidate 
[3088](sec 8)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000578 __imp_inflateReset2 
[3119](sec 8)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000568 __imp_inflateInit2_ 
[3138](sec 8)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000560 __imp_inflateEnd 
[3143](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x0000000000021b10 inflateReset 
[3155](sec 8)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000558 __imp_inflate 
[3162](sec 8)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000580 __imp_inflateValidate 
[3197](sec 8)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x0000000000000570 __imp_inflateReset 
[3244](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x0000000000021b20 inflateEnd 
[3253](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x0000000000021b18 inflateInit2_ 

を膨らま?そして、誰もこれを修正する方法を知っていますか?

ありがとうございます。

答えて

1

ちょうど同じ問題が発生しました。これは、PATH環境変数のconfiliitting dllファイルであることが判明しました。 lddコマンドを実行して、疑わしいと思われるdllファイルを見つけてください。

たとえば、私の場合、原因はIntelワイヤレスソフトウェアのzlib1.dllです。

 

    E:\samples\sfmlSound>ldd sfmlSound.exe 
      ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffee3e70000) 
      KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffee3030000) 
      ... 
      zlib1.dll => /c/Program Files/Intel/WiFi/bin/zlib1.dll (0x7ffed0f10000) 
      ... 

競合が解決された後、プログラムが正しく読み込まれます。

関連する問題