簡體   English   中英

如何管理從Matlab編碼器自動生成的C文件?

[英]How to manage automatically generated c-files from matlab coder?

我現有一個具有多種功能的dll,我們稱之為mylib 我決定使用Matlab編碼器來幫助我編寫C文件。 這些c文件使用VS 2015進行編譯和鏈接以生成mylib

因此,我首先使用matlab coder ver 3.4 (R2017b)funcA.m轉換為funcA.c來測試這一理論。 funcA是一個簡單的數學函數。 然后,我編譯並鏈接了由matlab編碼器生成的所有c文件,以將funcA包含在mylib 這完美地工作了。 意思是,原來是m文件的funcA已編譯,鏈接到mylib ,並產生了准確的結果。

當我使用matlab編碼器生成第二個函數時,就會出現問題。 讓我們調用第二個功能-> funcB

將funcA.m轉換為funcA.c之后,matlab編碼器生成了其他c文件,其中包括xgeqp3.cxnmr2.c及其對應的頭文件。 我認為它們是人類無法讀取的,因為它們是由matlab coder自動生成的,並且您無法通過c文件的名稱來讀取它們,因此對人類不友好。 但是,它們被funcA調用,因此它們也必須編譯到庫中。

這些由matlab生成的c文件給我帶來了問題,因為當我將funcB.m轉換為funcB.c ,它還生成了xgeqp3.cxnmr2.c 盡管文件名相同,但是文件內容不同,形式參數不同,當然c代碼也不同,即使它們具有相同的函數名和文件名也是如此。

因此,同一庫不能包含由matlab編碼器生成的這兩個函數,因為xgeqp3.cxnmr2.c的聲明是矛盾的。 我確定其他人可能也會遇到同樣的問題。 有沒有一種方法可以手動命名由matlab編碼器生成的額外c文件,從而避免出現重復的名稱? 還是有一種方法可以管理名稱重復但代碼不同的c文件? 較簡單的選項是為兩個函數創建單獨的庫。 但是我希望所有數學函數都在同一個庫中。

我應該如何處理這種情況? 我願意接受新想法。 先感謝您。

您應該為要在同一dll中編譯的所有函數一起生成c代碼。
如果使用命令行,則應該執行以下操作:

codegen funcA, funcB  

如果您使用的是Matlab Coder App,則將兩個函數都添加為入口點文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM