憂鬱な午後のひととき

1月17日_

C++17勉強会

string_viewの話. 以前, 規格が確定する前に少し調べていたのだった(string_view).

1月13日_

Re: templateクラスのstatic変数のexport

わかった. templateクラス本体に手を入れるのではなく 明示的templateクラスの生成時(explicit template instantiation)に__declspecをつけるのだった(var.hpp).

#ifdef DLL_EXPORT
    #define DLL_API __declspec(dllexport)
#else
    #define DLL_API __declspec(dllimport)
#endif
template struct DLL_API X<int>;

これを使えばやりたいことが出来るかな. 試してみよう.

1月11日_

生態系を巡る窒素:足りないのか余っているのか

面白かった. 雨やちりから来る窒素と森林が循環させて排出する窒素とどのように見分けるのか. NとOのそれぞれの同位体を組み合わせるらしい.

1月5日_

cgo on Linux/mingw/Mac

いろいろ微妙に異なっていてはまった.

LinuxのLD_LIBRARY_PATHはMacではDYLD_LIBRARY_PATHを使う.

相対パス指定で共有ライブラリをリンクしたexeをPythonから呼び出すとMacでライブラリが見つからず実行時エラー.

otool -L <実行ファイル>

でlib/libmcl.dylibとなっていた. これはinstall_name_toolで

install_name_tool bin/bls_smpl.exe -change lib/libmcl.dylib $(MCL_DIR)/lib/libmcl.dylib

と絶対パスに変更したらうまくいった(そもそもリンク時に絶対パスにすればよさそうだがよく分からなかった).

CGO_CFLAGSはかなりはまった. Linuxでは相対パスでよいのにmingwでは絶対パスでないといけないようだ.

加えて一番悩んだのはcgoから呼び出すヘッダがさらに別のヘッダを呼び出しているとき, その絶対パスは/c/pathではだめでc:/pathの形でないといけない模様(cgoが直接呼ぶヘッダは/c/pathでもOK).

pwdで取得したパスをsedで置換することにした. これはcgoのバグなんじゃなかろうか(後でもう一度調べる).

1月4日_

畝傍山

久しぶりに登る. 朝の6時頃なのでこけたりしないよう慎重に.

1月3日_

準備

実家はインターネットにつながってないのでSCISの資料作りなど手元でできることをちょっとずつ.

1月2日_

実家で散歩

流石にまた怪我するのはごめんなので明け方でも道がわかるところを散歩.


御意見は光成滋生<herumi@nifty.com>までお願いします