[英]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.c
和xnmr2.c
及其對應的頭文件。 我認為它們是人類無法讀取的,因為它們是由matlab coder
自動生成的,並且您無法通過c文件的名稱來讀取它們,因此對人類不友好。 但是,它們被funcA
調用,因此它們也必須編譯到庫中。
這些由matlab生成的c文件給我帶來了問題,因為當我將funcB.m
轉換為funcB.c
,它還生成了xgeqp3.c
和xnmr2.c
。 盡管文件名相同,但是文件內容不同,形式參數不同,當然c代碼也不同,即使它們具有相同的函數名和文件名也是如此。
因此,同一庫不能包含由matlab編碼器生成的這兩個函數,因為xgeqp3.c
和xnmr2.c
的聲明是矛盾的。 我確定其他人可能也會遇到同樣的問題。 有沒有一種方法可以手動命名由matlab編碼器生成的額外c文件,從而避免出現重復的名稱? 還是有一種方法可以管理名稱重復但代碼不同的c文件? 較簡單的選項是為兩個函數創建單獨的庫。 但是我希望所有數學函數都在同一個庫中。
我應該如何處理這種情況? 我願意接受新想法。 先感謝您。
您應該為要在同一dll中編譯的所有函數一起生成c代碼。
如果使用命令行,則應該執行以下操作:
codegen funcA, funcB
如果您使用的是Matlab Coder App,則將兩個函數都添加為入口點文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.