Компиляция кода C ++ 11 как части mex-файла MATLAB - PullRequest
6 голосов
/ 29 марта 2012

У меня есть фрагмент кода, написанный на C ++ 11, который я хочу скомпилировать как часть файла MATLAB MEX для GNU / Linux.

Проблема в том, что MATLAB в Linux поддерживает только GCC 4.3 (и более ранние версии) и не поддерживает GCC 4.7, который требуется для компиляции моего кода C ++ 11.

Возможно ли обойти проблему?

Можно ли обойти это, скомпилировав некоторые объектные файлы с помощью GCC 4.7 и связать их в файл MEX с помощью GCC 4.3?

Заранее спасибо!

1 Ответ

5 голосов
/ 29 марта 2012

Если вы можете написать любой код в вашем расширении 4.3 и скомпилировать его, то просто напишите код, чтобы отделить общий объект, который вы написали и скомпилировали в 4.7. Используйте 4.7 .so, чтобы выполнить всю работу с ++ 11, и просто передайте ей информацию через интерфейс C. Написанная вами версия 4.3 может получить доступ ко всем вещам взаимодействия MATLAB.

Вы могли бы сделать это и множеством других способов, но это самый чистый. Вы не должны пытаться связать объектный файл с вашим расширением 4.3, так как вы будете получать доступ к двум различным версиям стандартной библиотеки (совершенно разным), и у вас не может быть нескольких определений одного и того же класса с разными макетами / методами / и т. Д. , Вы будете бороться с правилом единого определения (ODR) c ++.

...