- Windowsのライブラリについて、32ビット版とか64ビット版という区別はあるのでしょうか。
- 32ビット版のライブラリがあった場合、64ビット版のアプリから32ビット版のライブラリを利用できるのでしょうか。
- Visual Stdio C++のライブラリは、Win32アプリケーションウィザードから"スタティックリンクライブラリ"や"DLL"を選択すると思っています。
64ビット版のライブラリを作成したい場合には、プラットフォームをx64にすれば良いのでしょうか。
質問が多いですが、よろしくお願いいたします。
Windowsのライブラリについて、32ビット版とか64ビット版という区別はあるのでしょうか。
ありますよ。
同じソースコードでも、ポインタ変数のサイズとかが変わりますから、バイナリは確実に違いがあります。
32ビット版のライブラリがあった場合、64ビット版のアプリから32ビット版のライブラリを利用できるのでしょうか。
ライブラリによりますが、無理だと思ってた方が間違いが無いでしょう。
たとえば、ポインタ変数のサイズが違います。
ポインタを受け渡しするような API を持っているようなライブラリは、全滅です。
Visual Stdio C++のライブラリは、Win32アプリケーションウィザードから"スタティックリンクライブラリ"や"DLL"を選択すると思っています。
64ビット版のライブラリを作成したい場合には、プラットフォームをx64にすれば良いのでしょうか。
「プラットフォームを x64 にすれば、後は何も気にしなくて良いのか?」という質問であれば、
それは間違いです。
型のサイズを前提にしないようなプログラムを書く必要があります。
例えば、
char* p_char; long long_var; long_var = (long)p_char;
かなり、恣意的なコードなので、「こんなことはしないよ」とか、思うかもしれませんが、
かつて、16bit から 32bit に移行する時代にも、こんなレベルのプログラムがたくさんあったので、
対応に苦労した方は多いはずです。
どういう状況下、いまいち分かりませんが、プログラムをリリースする立場にいるのであれば、
ということになるかと思います。
今どきだと、.NET Framework で作ってる人が多いだろうと思いますが、
こんなことを書いている方もいらっしゃいます。
> Windowsのライブラリについて、32ビット版とか64ビット版という区別はあるのでしょうか。
もちろんあります。
> 32ビット版のライブラリがあった場合、64ビット版のアプリから32ビット版のライブラリを利用できるのでしょうか。
できないことはありませんけど、基本的に無理だと思った方がいいかもしれません。
以下が少し参考になるかと思います。
http://d.hatena.ne.jp/sea-show/20100313/1268476785
> Visual Stdio C++のライブラリは、....プラットフォームをx64にすれば良いのでしょうか。
その通りです。
一部データ型のサイズが変わってくるので気をつけるべきことはありますが、
コンパイル時に警告がでてくれるのでそれを見ながら考えればいいかと思います。
Win32 でも x64 でもコンパイルが通るようにコードを書くことが大事です。
コメント(1件)
・.NET のライブラリ
・COM のライブラリ
・Win32 のライブラリ
のような種類があります。
いずれも 64ビット/32ビット 版が存在ます。
VC++ でネイティブアプリでの開発ですと、Win32 のライブラリを使うことになりますが、
64ビットプロセスから32ビットライブラリの呼出し、
32ビットプロセスから64ビットライブラリの呼出し
はサポートされていません。
■ プロセスの相互運用性 (Windows) - 64 ビット Windows プログラミング ガイド
http://msdn.microsoft.com/ja-jp/library/aa384231(VS.85).aspx
> 64 ビット版の Windows では、
> 64 ビット プロセスは 32 ビットの DLL を読み込むことができません。
> また、32 ビット プロセスは 64 ビット DLL を読み込むことができません。
また、Windows の 64ビット環境でのプログラミングに関しては以下の情報が参考になるかと思います。
<参考情報>
■ 64 ビット プラットフォームへのアプリケーション移行(PDF 形式、20.1 MB)
http://download.microsoft.com/download/B/0/9/B09F266D-8D54-4476-A3EC-E974CA5F61F8/BS_202.pdf
■ WOW64 のベスト プラクティス(Word ファイル 323 KB)
http://download.microsoft.com/download/1/E/F/1EF2E35E-501E-490B-B4B3-5E34A86FF1C2/wow64_bestprac_jpn.docx