|
|
|||||||||
|
|||||||||
|
|
QD 40 - qdとQDGlobalsの使用(09-Feb-96)Q: SCでコンパイルしたサンプルプログラムがあるのですが、このプログラムをリンクしようとすると、リンカが以下のようなエラーを返してきます。 ### Link: Error: Undefined entry, name: (Error 28) "qd" Referenced from: main in file: :Obj 68K:FIFDECO.c.o" qd"は、QuickDrawグローバル変数です。このグローバル変数を
QDGlobals qd;というように宣言すると、エラーは発生しなくなります。これは、少々ややこしい現象です。というのも、このグローバルはPowerPCコードの場合にのみ宣言することになっており、68Kの場合には自動的に宣言されるはずだからです。実際、同じコードはMetrowerks Codewarriorでも、また、Symantec C++ v7.0 IDEでも正常にコンパイル、リンクされます。68Kでこのグローバルを宣言するためには、何か新しいライブラリをインクルードする必要があるのでしょうか? それとも、ヘッダファイルに何か微妙な変更が行われたのでしょうか?
A: 最近のことですが、従来形式のMacintoshランタイム・アーキテクチャ(classic
Macintosh runtime architecture)用のMPWライブラリが変更されました。新しいMPWライブラリでは、他のMacintoshランタイム・アーキテクチャ(PowerPCおよびCFM-68Kランタイム・アーキテクチャ)用のライブラリと同様に、QuickDrawグローバル" #if GENERATINGCFM QDGlobals qd; // すべてのCFM環境で必要 #else #ifndef SYMANTEC_C || SYMANTEC_CPLUS #define __MPW_ONLY__ #endif #if defined (__SC__) && defined(__MPW_ONLY__) QDGlobals qd; // MPWでSCを使用する場合に必要 #endif #undef __MPW_ONLY__ #endif
QDGlobalsと" [ Technical Q&A's : Graphics & Media : QuickDraw : QD40 ] |
|