[英]Linker error unresolved external symbol with only wWinMain MSVC 2019
[英]MSVC 2019: Provide input files as text file to the linker
我將 MSVC2019 用於兩個 C++ 項目:
TEST 不僅對 DLL 的 API 部分進行測試,還對 APP 的一些未發布的方法(“單元測試”)進行測試。 通過鏈接到 APP 項目的 .obj 文件,這些方法對 TEST 項目可見。
最近保持這個 .obj 文件列表是最新的變得乏味。 我想知道是否有辦法將文件列表作為輸入文本文件提供給 MSVC 鏈接器(請參閱"Configuration Properties" -> "Linker" -> "Command line" -> "Additional options"
)。 腳本可以輕松生成文件列表,然后通過管道從標准輸入將其傳遞給鏈接器。
我的第一次嘗試失敗了,只需添加"< myLinkerArguments.txt"
。
示例: PATH_TO_LINKER\link.exe /ERRORREPORT:PROMPT /OUT:"G:\testproject\test_d.exe" < myLinkerArguments.txt
任何想法如果以及如何可能?
謝謝你的閱讀,保羅
根據 Microsoft 文檔,您可以嘗試以下不同的方法:
單元測試調用未從 DLL 導出的非成員函數,並且 DLL 可以構建為靜態庫: 更改 DLL 項目,使其編譯為 .lib 文件。 添加引用被測項目的單獨測試項目。
這種方法的好處是允許您的測試使用非導出成員,但仍將測試保留在單獨的項目中。
或者
單元測試必須調用未導出的非成員函數,並且代碼必須構建為動態鏈接庫 (DLL):在與產品代碼相同的項目中添加單元測試。
有關詳細信息,請參閱https://docs.microsoft.com/en-us/visualstudio/test/how-to-write-unit-tests-for-cpp-dlls?view=vs-2022 。
我將構建一個在各個方面都相同但(也)導出您要測試的附加功能的 DLL 版本。 將這些作為單獨的目標文件鏈接起來聽起來很危險,因為那時你有兩個副本——一個在 .OBJ 文件中,一個在 DLL 中——這很可能會導致麻煩。
實現此目的的一種實用方法是通過宏,我們將其EXPORT_FOR_TESTING
,它可以在構建 DLL 的項目文件中適當地#defined。
因此,在其中創建自己的其他配置,其中之一 #defines EXPORT_FOR_TESTING
為__declspec( dllexport )
,然后另一個可以將其定義為空。 之后,只需將您的測試應用程序與測試 DLL 鏈接就可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.