Как собрать несколько файлов .dll (.mexw32) в одном проекте Visual Studio? - PullRequest
3 голосов
/ 21 января 2011

Я поддерживаю библиотеку Matlab, которая состоит из огромного количества MEX-файлов. До сих пор я создавал библиотеку с помощью сценария Matlab, но теперь я хотел бы начать использовать Microsoft Visual Studio IDE для всего процесса сборки. Я получил довольно далеко со следующими инструкциями:

Однако эти инструкции, похоже, работают только с одним MEX-файлом. Проблема у меня заключается в том, как создать несколько целей .mexw32 (или эквивалентно .dll целей) в рамках одного проекта Visual Studio? Создание отдельного проекта (в том же решении) для MEX-файлов - это не вариант, который мне хотелось бы рассмотреть. Эти файлы исчисляются сотнями.

Для тех, кто не знаком с Matlab, MEX-файлы - это файлы расширения, написанные на C ++ и скомпилированные по существу в файлы .dll со специальным расширением .mexw32. Каждый из них экспортирует одну точку входа void mexFunction(...). AFAIK, вы не можете связать их в один .dll, что я бы предпочел сделать.

Ответы [ 2 ]

1 голос
/ 21 января 2011

Возможно, будет проще встроить это в скрипт MATLAB.Например, команда MATLAB, подобная этой:

mex -f msvc90opts.bat MyMexFile.c

выполнит эту работу.Вы, очевидно, имели бы одну строку на файл MEX.Файл msvc90opts.bat основан на шаблоне, поставляемом в папке установки MATLAB в bin\win32\mexopts.

Для моего процесса сборки я затем обертываю эти вызовы до mex в функцию и затем вызываю ее изкомандная строка с использованием:

matlab.exe -wait -sd . -nosplash -nojvm -r "BuildMex, exit"
0 голосов
/ 21 января 2011

Я думаю, что создание проекта для каждого файла MEX и объединение их в одно решение - единственный вариант.Файлы проекта предназначены для представления одной цели, будь то статическая библиотека, динамическая библиотека или исполняемый файл.Решения были разработаны, чтобы представлять коллекцию проектов и как они зависят друг от друга.Это именно то, что вам нужно.

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

...