Справка: Компиляция VS2005 *.m файла

все

У меня есть файл test.m (исходный код Matlab), который реализует функцию A(); и файл main.cpp (будет вызывать A() ).

Как вы знаете, мы можем сделать следующие шаги:

  1. используйте Matlab для компиляции test.m (mcc-), сгенерирует: test.dll, test.ctf, test.h.

  2. скопируйте файлы test.dll и test.ctf, test.h в проект VS2005. в main.cpp вызовите A() в test.dll.

Но, когда я выпущу программу, я также упакую вместе test.dll.

И еще один способ, могу ли я использовать VS2005 для компиляции как test.m, так и main.cpp, который будет генерировать только main.dll, main.ctf, main.h.. (я буду выпускать только main.dll, main.ctf, main .час,).

это означает, что я компилирую test.m в main.cpp.

И я пробовал так, в VS2005 ---> События сборки --> Событие перед сборкой --> командная строка: mcc C -w lib:test test.m

и он сгенерирует средний файл test.ctf (только test.ctf, без test.dll). Но я не знаю, как скомпилировать test.ctf в main.cpp?

кто-нибудь может мне помочь?

Благодарю.


person Price    schedule 01.09.2011    source источник


Ответы (1)


Вы можете сделать это наоборот и добавить свой main.cpp в процесс сборки Matlab: я не знаю точного синтаксиса, но вы можете добавить свой main.cpp в mcc/mbuild, и он добавит его в dll для тебя. При использовании deploytool в режиме графического интерфейса просто перетащите файлы c/c++ в область ресурсов, и они будут скомпилированы в dll. Таким образом, у вас будет одна dll, содержащая только код m и ваш собственный код C++.

Другой вариант, использующий описанную выше стратегию: сначала попробуйте вышеописанное и посмотрите на вывод deploytool: он покажет вам используемые команды. Сначала он вызывает mcc, затем mbuild, который, в свою очередь, вызывает cl (компилятор MS). Используйте ту же команду, которая использовалась для вызова mcc в качестве события перед сборкой, а затем добавьте эти выходные файлы в cl таким же образом, как это делает mbuild (вы также можете увидеть в выводе, как это делается). Таким образом, вы все равно можете использовать VS для создания одной DLL, просто имитируя то, что делает процесс сборки Matlab.

Тем не менее я не уверен, как это выгодно по сравнению с распространением двух по отдельности. Также не забывайте, что вы должны распространять с ним весь MCR, иначе ваши клиенты не смогут запускать какой-либо код с помощью dll.

person stijn    schedule 01.09.2011
comment
Во-первых, спасибо за вашу большую помощь. Но я хочу использовать VS2005 для создания файла *.m, а не использовать инструменты Matlab. - person Price; 06.09.2011
comment
@ nitty1983, что именно ты имеешь в виду? использовать компилятор c/C++ для создания m файлов? это невозможно. - person stijn; 21.09.2011