2016-08-27 25 views
0

OpenSSLを使用してVisual Studio 2015でC++アプリケーションをビルドしようとしています。 "アプリケーションを正しく起動できませんでした"というメッセージで0xC0000007bエラーが発生します。 Dependency walkerを使用すると、私のアプリケーションがx86として構築されていて、SYSWOW64の代わりにSystem32のX64 OpenSSL DLLが使用されていました。64ビットDLLのためWin32アプリケーションとエラー0xC0000007bが発生する

Visual Studioに32ビットDLLを使用させるにはどうすればよいですか? (?またはWindows)

libeay32.lib 
ssleay32.lib 

とVisual Studioの自動負荷くれ

編集0xc0000007bエラーを取得する64ビット版、::私はちょうどこの二つの依存関係を追加

うんを、 DLL32ビットはSysWow64にもあります。

どうぞよろしくお願いします。

どうもありがとう:)

+0

パスにSystem32が表示されても、結論に直接ジャンプしないでください。 x86プロセスの場合、WindowsはSysWOW64 for System32を自動的に置き換えます。 – rustyx

+1

32ビットのopenssl dllでリンクする必要があります。またはx64用にコンパイルします。 – doug

+0

私はちょうど32ビットopenSSLのlibにリンクします。 –

答えて

1

あなたは自動的にあなたのアーキテクチャのための適切なライブラリを見つけるために、Visual Studioのを強制することはできません。その代わりに、ライブラリパス経由で明示的に指す必要があります。ターゲットプラットフォームが複数ある場合は、$(PlatformName)を使用してください。

Windowsよりもx86としてアプリケーションをコンパイルすると、Windowsが適切な32ビットのsystem32フォルダに自動的にリダイレクトされます。しかし、それに頼らず、必要なOpenSSL dllをローカルにアプリケーションフォルダに展開してください。ターゲットプラットフォームが複数ある場合は、ビルド後のイベントで$PlatformNameマクロを使用すると便利です。例:

copy "$(SolutionDir)3rdParty\OpenSSL\$(PlatformName)\ssleay32.dll" "$(TargetDir)" 
copy "$(SolutionDir)3rdParty\OpenSSL\$(PlatformName)\libeay32.dll" "$(TargetDir)" 
関連する問題