2011-07-27 14 views
1

私はMac OS X 10.6で単純なDLLをコンパイルしようとしていますが、DLLが世界に提供する機能を宣言する正しい方法について混乱しています。信頼できるソースのサンプルコードに続いて、私は思いつきました:Mac OSXでDLL関数をエクスポートする正しい方法

__declspsec(dllexport) pascal int ReturnTheNumberFive(void) 

しかし、それにgcc barfsがあります。サンプルコードが実際に持っていたのはMACPASCALとDLLExportでした。これはマクロであると仮定しました。 #defineのサンプルコード、SDKなどを網羅し、見つかったものをプラグインしました。これらの定義は#ifsの中に埋め込まれていた可能性があるので、私が見つけたものは良くて真実ではありません。暗黙のうちに、コンパイラはまた、私がちょうど明白なことをして、DLLExportとMACPASCALを使用すれば、それは解決できません。

DLLの機能をアプリケーションで使用できるようにする正しい方法は何ですか?

+2

、 'DLLは' DLLと呼ばれていません。ファイル自体は '.dylib'と呼ばれ、しばしば' .framework'に埋め込まれます。用語集を練習しているだけではありません...コミュニティで使われている言葉がないと、Googleの情報が難しくなります。ですから、今から 'dylib'と' framework'という言葉を使いましょう。 – Yuji

+0

Macプログラミングの世界で突然自分自身を見つけている私たちは、本当にすべてのことを説明する新人のためのガイドです。今のところ、あなたのコメントのようなものです。 – DarenW

答えて

5

デフォルトでは、すべてのシンボルは.dylibで表示されます。 (例えばPascalの呼び出し規約など)は、呼び出し規約の変更は、要するに、

そうありません:

Macの

int ReturnTheNunmberFive(void) { return 6; }

+0

DLLExportとMACPASCALは、明らかに他のプラットフォームへの移植性があります。アップルの国の外国人として、私がどこにいてもこれらのことが評価されているということは、どこにも説明されていません。まあ、今私は知っている! – DarenW

関連する問題