簡體   English   中英

MSVC 2019:將輸入文件作為文本文件提供給鏈接器

[英]MSVC 2019: Provide input files as text file to the linker

我將 MSVC2019 用於兩個 C++ 項目:

  1. APP是一個動態鏈接庫。
  2. TEST 是自動化測試項目。

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.

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