1

TLDR: 質問は一番下にあります。

Windows Phone 8 のコマンド ラインからライブラリをコンパイルしようとしています。すべてのハードウェアとソフトウェアが用意されています。テストとして、Visual Studio ソリューションからテスト ライブラリを作成することに成功しました。

コマンドラインからファイルをコンパイルしようとすると、次のようになります。環境はVisual Studioの「ARM Phone Tools Command Prompt」を使って設定しました。

C:\Users\Jeffrey Walton\Desktop\openssl-fips-2.0.5>"C:\Program Files (x86)\Micro
soft Visual Studio 11.0\VC\WPSDK\WP80\bin\x86_arm\CL.exe" -DFIPS_START -Iinc32 -
Itmp32dll -DOPENSSL_FIPSCANISTER -DOPENSSL_THREADS -DDSO_WIN32 -D_CRT_SECURE_NO_
DEPRECATE /AI"C:\Program Files (x86)\Windows Phone Kits\8.0\Windows Metadata" /D
_USRDLL /D NDEBUG /D _WINDLL /D WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP /fp:precis
e -DOPENSSL_USE_APPLINK -I. -DOPENSSL_NO_RC5 -DOPENSSL_NO_MD2 -DOPENSSL_NO_KRB5
-DOPENSSL_FIPS -DOPENSSL_NO_JPAKE -DOPENS -DSSL_NO_STATIC_ENGINE -c .\fips\fips_
canister.c

fips_canister.c
C:\Program Files (x86)\Windows Phone Kits\8.0\include\ws2tcpip.h(1032) : fatal e
rror C1083: Cannot open include file: 'wspiapi.h': No such file or directory

wspiapi.hVisual Studio のインストール ディレクトリにも Phone Kit ディレクトリにも見つかりませんでした。を確認するws2tcpip.hと、次のような利点があります。

// Unless the build environment is explicitly targeting only
// platforms that include built-in getaddrinfo() support, include
// the backwards-compatibility version of the relevant APIs.
//
#if !defined(_WIN32_WINNT) || (_WIN32_WINNT <= 0x0500)
#include <wspiapi.h>
#endif

ではws2tcpip.h、ほとんどの条件付きコンパイルが の周りで発生しているように見えます_WIN32_WINNT >= 0x0600

を確認する<winsdkver.h>と、次のように表示されます (ただし、Windows Phone 8 の定義はありません)。

// _WIN32_WINNT version constants
//
...
#define _WIN32_WINNT_VISTA                  0x0600
#define _WIN32_WINNT_WS08                   0x0600
#define _WIN32_WINNT_LONGHORN               0x0600
#define _WIN32_WINNT_WIN7                   0x0601
#define _WIN32_WINNT_WIN8                   0x0602

<winsdkver.h>私の質問: with /FI(またはバージョンを設定する他のヘッダー)のインクルードを強制する必要があります。または私はに定義する必要があります_WIN32_WINNT_WIN32_WINNT_WIN8?フォースインクルードが機能することを私は知っています。(その価値のために、Visual Studio は同じように苦しんでおらず、これらの定義のいくつかで特別なことをしていません)。

4

1 に答える 1