2014-11-17 4 views
1

У меня есть заголовочный файл C++ и соответствующая статическая библиотека (файл .lib). Нет исходного файла. Код содержит несколько классов, каждый из которых имеет свои собственные функции.Вызов функций класса класса C++ в статической библиотеке из MATLAB

Я бы хотел, чтобы эти функции вызывали из MATLAB.

Может ли быть любезным, чтобы указать мне в правильном направлении? Примеры были бы оценены.

Спасибо.

EDIT: Было бы неплохо написать DLL, чтобы действовать как интерфейс между статической библиотекой и MATLAB? Затем я могу получить доступ к функциям моей статической библиотеки из DLL и использовать calllib для доступа к DLL из MATLAB. Если да, то как бы я назвал функции члена класса в статической библиотеке из DLL?

Update Так что я решил написать DLL, в которой я буду связывать статическую библиотеку и вызывать функции из MATLAB через это с помощью calllib Проблема, статическая библиотека уже составлена, и я не имеют источник. Я пытаюсь связать файл .lib (предположительно построен с использованием Visual Studio) и строить свою DLL с помощью Mingw32, но это не работает, возможно, из-за (lack of?) interoperability of libraries created by different compilers. Это команда MinGW Я использую ссылку: g++ -c -o -DBUILDING_INTERMEDIATE_DLL intermediate_dll.cpp -TaccClient.lib

intermediate_dll. cpp является исходным файлом для моей DLL и TaccClient.lib - это статическая библиотека, которую я использую.

У кого-нибудь есть предложения относительно того, как это может работать, или мне придется подождать и попробовать его на визуальной студии позже?

+0

Взгляните на ['calllib'] (http://www.mathworks.com/help/matlab/ref/calllib.html). Вероятно, вам понадобится оболочка для вызова функций класса. – buzjwa

+0

@Naveh - это calllib не только для разделяемых библиотек? У меня есть статическая библиотека и только соответствующий файл заголовка - нет исходного файла. –

+0

Ваш подход к DLL такой же, как и люди, обсуждаемые здесь :) http://www.mathworks.com/matlabcentral/answers/137241-using-static-library-in-matlab и пример здесь http://stackoverflow.com/questions/24704251/linking-and-loading-static-lib-with-mex – Kostya

ответ

0

MATLAB предлагает функциональность кодера MATLAB, которая позволяет создавать файлы MEX из исходных и библиотечных файлов C/C++. Существует также возможность вызывать совместно используемые библиотеки C при создании файла MEX для вашего приложения. Я использовал SIMULINK (с SIMULINK Coder) и Embedded Coder, чтобы связать свою библиотеку, и это поможет вам сделать это с помощью графического интерфейса пользователя, поэтому очень аккуратная работа. Тем не менее, вы все равно можете сделать это с MATLAB, если у вас есть поддерживаемый компилятор C/C++.

С помощью функции общей библиотеки C вы можете загружать, вызывать, просматривать библиотеку и функции. Для получения дополнительной информации о других функциях см. Это: http://uk.mathworks.com/help/matlab/using-c-shared-library-functions-in-matlab-.html

Аналогичный вопрос был дан here. Может быть, вы сочтете это полезным?

+0

К сожалению, у меня нет исходного файла. У меня есть только статическая библиотека и заголовочный файл. Я столкнулся с этим вопросом, но не нашел его особенно полезным, так как мне не хватает исходного файла. –

Смежные вопросы