人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Visual Stdio C++を用いた、Windowsライブラリについて教えてください。

- Windowsのライブラリについて、32ビット版とか64ビット版という区別はあるのでしょうか。

- 32ビット版のライブラリがあった場合、64ビット版のアプリから32ビット版のライブラリを利用できるのでしょうか。

- Visual Stdio C++のライブラリは、Win32アプリケーションウィザードから"スタティックリンクライブラリ"や"DLL"を選択すると思っています。
64ビット版のライブラリを作成したい場合には、プラットフォームをx64にすれば良いのでしょうか。

質問が多いですが、よろしくお願いいたします。


●質問者: uraxurax
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●50ポイント

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 で作ってる人が多いだろうと思いますが、

こんなことを書いている方もいらっしゃいます。

http://sgry.jp/pgarticles/64.html


2 ● SweetSmile1978
●50ポイント

> Windowsのライブラリについて、32ビット版とか64ビット版という区別はあるのでしょうか。

もちろんあります。

> 32ビット版のライブラリがあった場合、64ビット版のアプリから32ビット版のライブラリを利用できるのでしょうか。

できないことはありませんけど、基本的に無理だと思った方がいいかもしれません。

以下が少し参考になるかと思います。

http://d.hatena.ne.jp/sea-show/20100313/1268476785

> Visual Stdio C++のライブラリは、....プラットフォームをx64にすれば良いのでしょうか。

その通りです。

一部データ型のサイズが変わってくるので気をつけるべきことはありますが、

コンパイル時に警告がでてくれるのでそれを見ながら考えればいいかと思います。

Win32 でも x64 でもコンパイルが通るようにコードを書くことが大事です。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ