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 でもコンパイルが通るようにコードを書くことが大事です。