LoginSignup
0
0

More than 5 years have passed since last update.

Maya XGen を使った plugin を Linux gcc 5.0+/clang でビルドするときの注意

Posted at

背景

Maya の Linux でのサポート OS は RHEL7(CentOS7)である.
RHEL7 のデフォルトコンパイラは 4.8 である.

C++11 + STL 関連で, gcc(clang)は ABI の変更を行った. gcc 5.0+(clang) からは新しい ABI が標準である.

Maya の XGen ライブラリ(or OpenMaya も?)は gcc4.8 でコンパイルされている

したがって新しめのコンパイラや, Ubuntu でコンパイルしようとすると, リンク時にシンボルが見つからないエラーがでる(mangle された symbol に B5cxx11 prefix がつく)
たとえば XgSplineAPI.hboundMeshId() などでエラーがでます.

解決方法

-D_GLIBCXX_USE_CXX11_ABI=0 としてビルドします.

補足

ABI の変更により, std::string の動作が変わったため, std::string boundMeshId()std::string を値渡し, 値返しでの型を含む関数がエラーになります.

OpenMaya の API は MString を使っているのと, 基本 char * で文字列を扱っているため, OpenMaya 関連は問題なくリンクできる模様です(ただし正しく動作するかは不明)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0