2017-01-24 1 views
0

問題: OSX10.5 -32ビットからOSX 10.11-64ビットにプロジェクトをアップグレードする必要があります。アップグレード中に、OS X 10.11 SDK for 64ビットモードで廃止された多くの関数でエラーが発生しました(C99では関数の暗黙のデカールが無効です)。これらの機能のうちのいくつかは:CopyCStringToPascal()の代わりにosx 10.11を使用してビルド中に10.11 sdk

CopyCStringToPascal() 
CopyPascalStringToPascal() 
FSOpenResFile() 
FSMakeFSSpec() 
GetDateTime() 
SecondsToDate() 
BlockMove() 

...などの機能です。 OS SDKと最新のSDKから来

これらの機能は、そのヘッダファイルにその宣言の周りに

#if !__LP64__ 
.. 
. 
.. 
#endif 

ガードを入れています。

64ビットモードで新機能を呼び出し、32ビットモードで古い機能を呼び出すラッパーを作成する方法の1つです。 ここから進んでいくためのもう一つの短い(そして簡単な)方法があるのだろうかと思っていました。

ありがとうございました。

答えて

0

あなたの基本的な質問に答えてください:これらの機能のいくつかには、64ビットがサポートされています。

  • 文字列:使用CFStringまたはNSString
  • GetDateTime()CFCalendarNSCalendar
  • BlockMove()を見てください:使用memmove()

しかし、任意のCFAbsoluteTimeGetCurrent()またはNSDateクラス

  • SecondsToDate()を見てください使用しているMacアプリケーションこの古いAPIは古典的なMac OSの時代を迎え、おそらく64ビットの利用可能なAPIに置き換えられないAPIも使用しています。たとえば、FSSpecデータ型とそれを使用するすべての関数はなくなりました。 QuickDraw、ATSUI、オープントランスポート、HIToolbox、Appearance Manager、およびすべてのGUI関連APIは廃止されました。

    Mac上で64ビットを実行するには、これらのAPIを使用するアプリケーションを取得するにはかなりの書き換えが必要です。最初のステップとして、32ビット版の10.11 SDKに対してアプリをコンパイルできますか?そして、実際にはは少なくとも今のところ、64ビットである必要がありますが必要ですか?

  • +0

    答えてくれてありがとう、ブレンダン(これは私の最初の質問stackoverflow)です。 はい、32ビットモードの10.11 SDKに対してアプリをコンパイルできます。私たちは64ビットバージョンを顧客に委託しているので、それを行う必要があります。 Appleは64ビットの古いAPIを完全に削除してはいけないと思います。これらの新しいAPIフォーマットを満たすためには、多くの変更が必要です。一口! –

    +0

    ええ、64ビットCarbonの欠如は、大きなCarbonアプリケーションを持つ企業にとって大きなショックと痛みでした。マイクロソフトは数ヶ月前に64ビットOffice for Macをリリースしたばかりで、すべてのアプリケーションをCocoa/64ビットに移植するまでには数年を要しました。 –

    関連する問題