07/06/15 17:35:48
すまない、俺が完全にタトしてたようだ orz
fpcディレクトリの.pas、.incファイルをなめてみたんだけど、MSG_NOSIGNAL が使われているのは
IdStackLinux.pas と IdStackUnix.pas の中だけで、
コンパイルされてエラーを吐くのは後者だね。
試しに適当な値を代入してやるとコンパイルする(fpc 2.1.4、PPC-Tiger)。
Result := fpRecv(ASocket, @ABuffer, ABufferLength, AFlags or Id_MSG_NOSIGNAL);
になってるけど、確かにWindows版? のスタックIDは
Result := Recv(ASocket, ABuffer, ABufferLength, AFlags)
で、const MSG_NOSIGNAL = 0 としたのと等価だ。
さて、ここがコンパイルできても次のエラーで止まる。
idSSLOpenSSL.pasの 687行目の
Result := CurrentThreadId; (* どうでもいいけど、このセミコロンはいらない。俺は断固付けない派 *)
で型が違う(ポインタが代入された)ってエラーを吐くんだな。強引にlongintに型キャストするとコンパイラは通る。
CurrentThreadIdはTidThreadId型を返す関数なんだけど、TidThreadIdはidGlobal.pasでlongwordに定義されているはずなので何か変だ。
つうんでちょっと弄るとコンパイルはできるけど、走るのかこれw
fpcsrcの再構築って、どこに書いてあったの?
Lazarus つうか FreePascal から外部ライブラリを呼べるよ。libcを呼んだり、Carbon.frameworkとリンクしたりする例がどっかにあった。