c - 如何管理从 matlab coder 自动生成的 c 文件?

标签 c dll visual-studio-2015 matlab-coder

我有一个具有多个功能的现有 dll,我们称它为 mylib。我决定使用 matlab coder 来帮助我编写我的 c 文件。使用 VS 2015 编译和链接这些 c 文件以生成 mylib

因此,我首先使用 matlab coder ver 3.4 (R2017b)funcA.m 转换为 funcA.c 来测试这个理论。 funcA 只是一个简单的数学函数。然后我编译并链接了 matlab coder 生成的所有 c 文件,以将 funcA 包含在 mylib 中。这非常有效。意思是,最初是一个 m 文件的 funcA 被编译,链接到 mylib 并产生了准确的结果。

当我使用 matlab coder 生成我的第二个函数时出现问题。让我们调用第二个函数 -> funcB

将funcA.m 转换为funcA.c 后,matlab coder 生成了其他c 文件,包括xgeqp3.cxnmr2.c 及其相应的头文件。我认为它们是人类不可读的,因为它们是由 matlab coder 自动生成的,并且阅读它们对人类来说并不友好,正如您可以从 c 文件的名称中看出的那样。但是,它们由 funcA 调用,因此它们也必须编译到库中。

这些 matlab 生成的 c 文件给我带来了问题,因为当我将 funcB.m 转换为 funcB.c 时,它还生成了 xgeqp3.cxnmr2.c。尽管文件名相同,但其内容不同,具有不同的形式参数,当然还有不同的 C 代码,即使它们具有相同的函数名和文件名。

所以同一个库不能包含这两个由 matlab coder 生成的函数,因为 xgeqp3.cxnmr2.c 的声明相互矛盾。我相信其他人可能也有同样的问题。有没有一种方法可以手动命名额外的 c 文件生成我的 matlab 编码器,这样我就可以避免这样的重复名称?或者有什么方法可以管理名称重复但代码不同的 c 文件?更简单的选择是为这两个函数创建单独的库。但我希望我所有的数学函数都在同一个库中。

我应该如何处理这种情况?我乐于接受新想法。提前谢谢你。

最佳答案

您应该为要在同一个 dll 中编译的所有函数一起生成 C 代码。
如果你使用的是命令行,你应该这样做:

codegen funcA, funcB  

如果您使用的是 Matlab Coder App,请将这两个函数添加为入口点文件。

关于c - 如何管理从 matlab coder 自动生成的 c 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52546747/

相关文章:

c++ - 为什么这段代码在实际的 BCM2837 (pi 3) 上运行时会挂起,但在 qemu 上运行良好

c - 分配不兼容类型的变量?

Java System.loadLibrary 依赖项

c - 如何使用 C 更改 .dll 的文件版本和产品名称?

c# - 带有 Mono 4.2.3 的 Web Api 2

visual-studio - Visual Studio 2015 解决方案资源管理器中的自定义/手动文件排序

c - 使用 clock_gettime 和 struct stat.mtim 的时序偏差

c - 查看 char ** 指针链的两种方式以及指针类型可以混合吗?

c# - Visual Studio 2015 社区 : PNG Editor Error - "Exception from HRESULT: 0x80020101"

visual-studio - 'ApacheCordovaToolsPackage' 包没有正确加载