Как управлять автоматически сгенерированными c-файлами из matlab кодера? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть существующая библиотека с несколькими функциями, назовем ее mylib.Я решил использовать Matlab Coder, чтобы помочь мне написать мои c-файлы.Эти c-файлы скомпилированы и связаны для генерации mylib с использованием VS 2015.

Итак, я проверил эту теорию, я сначала начал с преобразования funcA.m в funcA.c с использованием matlab coder ver 3.4 (R2017b).funcA является простой математической функцией.Затем я скомпилировал и связал все c-файлы, сгенерированные кодировщиком Matlab, чтобы включить funcA внутри mylib.И это сработало отлично.Это означает, что funcA, который изначально был m-файлом, был скомпилирован, связан с mylib и дал точные результаты.

Проблема возникает, когда я использую Matlab Coder для генерации моей второй функции.Давайте назовем вторую функцию -> funcB

После преобразования funcA.m в funcA.c, кодировщик Matlab сгенерировал другие c-файлы, которые включают xgeqp3.c и xnmr2.c и соответствующие им заголовочные файлы.Я считаю, что они не читаются людьми, потому что они были автоматически сгенерированы matlab coder, и читать их неудобно для человека, как вы можете сказать по имени c-файлов.Однако они вызываются funcA, поэтому их также необходимо скомпилировать в библиотеку.

Эти сгенерированные Matlab c-файлы вызвали у меня проблемы, потому что когда я конвертировал funcB.m в funcB.c, он также генерировал xgeqp3.c и xnmr2.c.Хотя имена файлов идентичны, их содержимое различно, с разными формальными параметрами и, конечно, разными c-кодами, даже если они имеют одинаковые имя функции и имя файла.

Таким образом, одна и та же библиотека не может содержать эти двафункции, сгенерированные Matlab Coder, потому что объявления для xgeqp3.c и xnmr2.c противоречат.Я уверен, что другие люди могут иметь такую ​​же проблему.Есть ли способ, которым я могу вручную назвать дополнительные c-файлы, сгенерированные моим matlab-кодером, чтобы я мог избежать таких повторяющихся имен?Или есть способ, которым я могу управлять c-файлами с дублирующимися именами, но разными кодами?Более простой вариант - создать отдельные библиотеки для двух функций.Но я хочу, чтобы все мои математические функции были в одной библиотеке.

Как мне справиться с этой ситуацией?Я открыт для новых идей.Заранее спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018

Вы должны сгенерировать код c вместе для всех функций, которые вы хотите скомпилировать в одной и той же DLL.
Если вы используете командную строку, вы должны сделать:

codegen funcA, funcB  

Если вы используетеMatlab Coder App, добавьте обе функции в качестве файлов точек входа.

...