[an error occurred while processing this directive] [an error occurred while processing this directive]

Time to Mac... ?

Wordが使えてUnixのソフトも普通に動く!

こまごましたTips

開発環境の整備

まずはXcodeを入れましょう。これはWindowsのVisual StudioみたいなGUI環境を含んだ開発環境みたい。
僕がいじったのはMacOS X 10.3付属のXcodeですが、ディスク開いていきなりのところにあるインストーラーをダブルクリックすると、一通りソフトが入ったような感じ。
でも、早速コマンドラインからgcc使おうとすると、
$ gcc test.c
ld: can't locate file for: -lcrt1.o
というエラー。
原因だけど、ここによると、 以下のファイルが/usr/lib/に無いのが原因らしい。 これらのファイルですが、XcodeのCDのPackagesフォルダの中にある、MacOSX10.3.0 SDK をインストールすると /Developer/SDKs/MacOSX10.3.0.sdk/usr/lib/に入って、コピーすると動きました。 (先のページの指示通り)
添付ドキュメント見てると、このCDの中のPackagesのなかのファイル、実は別々に入れないと入らないらしい。 でもgccは3.3が標準だから、2.95は入れなくてもいいらしい。 BSDSDKってのは名前に惹かれるけど、何するかよくわからない。

Fink

MATLAB

MacのMATLABでMEX関数を作ろうと思って、こんなソースを書いた。
#include "/Applications/MATLAB701/extern/include/mex.h"

void mexFunction(int out_args, mxArray *out_argv[], int in_args, mxArray *in_argv[]){
  mexPrintf("Hello?\n");
}
mexでコンパイルしたらこんなエラー。
% /Applications/MATLAB701/bin/mex test.cc
ld: symbols names listed in -exported_symbols_list: /Applications/MATLAB701/extern/lib/mac/mexFunction.map not in linked objects
_mexFunction

    mex: link of 'test.mexmac' failed.
関数の宣言を以下のように変えると動きました。
void mexFunction(int out_args, mxArray *out_argv[], int in_args, const mxArray *in_argv[]){
[an error occurred while processing this directive]