2

私は Windows 8 で OpenSSL をビルドしてリンクしようとしていますが、非常に困難であることがわかりました。私は次の投稿を認識していることに言及する必要があります

しかし、私が本当に知る必要があることを扱ったものはありませんでした。そのため、新しい投稿として私の経験を皆さんと共有することにしました!

まず、Win32 OS 上で OpenSSL を正常にビルドおよびリンクでき、完全に機能します。Windows 8にはWOW64が付属していることを知っています。「<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa384249%28v=vs.85%29.aspx" rel="nofollow noreferrer">WOW64 は x86 エミュレーターです。これにより、32 ビットの Windows ベースのアプリケーションを 64 ビットの Windows でシームレスに実行できます。 libeay32.dll がコンピューターにありません…</strong>」というメッセージが表示されますが、「<strong>libeay32.dll」は明らかにそこにあり、見つからないわけではありません。

レジストリの欠落を回避するために、Windows 8 で 32 ビット モードで OpenSSL をビルドしようとしました。ビルドは正常に完了し、アプリはエラーなしで正しくリンクされました。再びアプリを実行すると、同じエラー メッセージが表示されました。

そして、次の手順に基づいて 64 ビット モードでビルドしようとしました。

set PATH=%PATH%;c:\perl\bin;c:\nasm;
call "c:\visual studio\2012\vc\vcvarsall.bat" x64
perl Configure VC-WIN64A no-shared no-idea
call ms\do_win64a
copy ms\libeay32.def ms\libeay64.def /Y
copy ms\ssleay32.def ms\ssleay64.def /Y

ssed -e s/out32/out64/g ms\ntdll.mak | ssed … > ms\ntdll-64.mak
ssed -e s/out32/out64/g ms\nt.mak | ssed … > ms\nt-64.mak

nmake -f ms\ntdll-64.mak
nmake -f ms\ntdll-64.mak test
nmake -f ms\ntdll-64.mak install

この場合、ビルド中に主に「データ変換とデータ損失の可能性」に関する多くの警告を受け取りましたが、ビルドされ、「<strong>テスト」が失敗したときに「<strong>インストール」が出力を生成しました。

新しい「<strong>libeay64.lib および ssleay64.lib」を使用して Visual Studio でソリューションをビルドしようとすると、「未解決の外部シンボル」というエラーがほぼ何千も表示されます</p>

可能であれば、次の質問に答えてください。

  1. Windows 8 (64 ビット) で 32 ビット アプリを実行できないのはなぜですか?
  2. Windows 8 で OpenSSL (32 ビット モード) を正しく構築したにもかかわらず、同じエラーが発生するのはなぜですか?
  3. OpenSSL ビルド (64 ビット モード) では、何か問題がありますか?

OpenSSL ver 1.0.1eVisual Studio 2012nasm 2.10.07を使用しています。

ありがとう

4

1 に答える 1

1

私はあなたの質問に部分的に答えています:

WOW64 では 64 ビットの下で 32 ビットを実行できます。

64 ビットの OpenSSL の場合、Visual Studio にはコンパイラ オプション /WX があり、これは警告をエラーとして扱うことを意味します。そのコンパイラ オプションをメイクファイルから削除します。多くの警告が表示されます。ただし、OpenSSL はコンパイルされます。

ほとんどのモジュールがコンパイルされておらず、オブジェクト ファイルが生成されていないため、リンカー エラーが発生しています。問題が解決するかどうかお知らせください。

于 2013-03-26T03:56:16.193 に答える