トップ «前の日記(2011/07/23(Sat)) 最新 次の日記(2011/07/27(Wed))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2011/07/26(Tue) 別に100%ロボっ娘でもいいですよ? [長年日記] 22:00現在 27℃

_ [C++][Mac]Macの64bitアプリケーションがBlockMove、BlockMoveData、BlockZeroのシンボルエラーでコンパイルできない場合

参考:

http://developer.apple.com/library/mac/#documentation/Carbon/Conceptual/Carbon64BitGuide/OtherAPIChanges/OtherAPIChanges.html

以下は、32bitアプリとしてはコンパイルできるのに、64bitアプリとしてコンパイルしようとすると以下のようなエラーが出る場合の説明である。

ld: Undefined symbols:
 _BlockMoveData
 _BlockMove
 _BlockZero

これらの関数はCoreServices.frameworks内の「MacMemory.h」で定義されており、従来の32bitアプリケーションでは問題なく使用できる。

ただし、参考元の公式のリファレンスにもあるとおり、BlockMove、BlockMoveData、BlockZero等の関数は、64bitアプリケーションでは使用できない。

代わりにBSDの関数である「memmove」や「bzero」を使う必要がある。

なお、「BlockZero」に関しては、引数等を変えることなく、そのまま「bzero」で置換可能である。ただ、「bzero」自体もレガシーな関数のため、実際には「bzero」よりも「memset」で置き換えたほうが望ましい。

_ [Mac]Macで起動ボリューム(起動ディスク選択)を選んで起動させる方法

1. Option キーを押し続けながら起動する
2. Startup Managerが起動するので、起動させたいボリューム(またはディスク)を選択する
3. エンターをおすと、選択したボリュームで起動する

以上!