2013-02-19 46 views
1

我正在Visual Studio 2012中開發一個C++項目,該項目使用驅動程序代碼與打開的DMX框(ENTTEC DMX USB PRO)進行交互。到目前爲止,我一直在編寫代碼並編譯爲EXE,因此我可以使用main()來運行單元測試。用可執行單元測試開發C++ DLL,同時編譯和鏈接?

我想將這個端口移植到一個.DLL,然後是一個單獨的源文件,它包含C++代碼來編譯鏈接到該DLL並調用函數的EXE運行測試。

本質上,當我去調試時,有沒有辦法設置Visual Studio 2012來生成.DLL和.exe調用.DLL並自動運行.exe所有的一步?我是新來的Visual Studio,發現它很混亂。

回答

1

是的。在你的解決方案中設置兩個項目:一個用於你的主代碼(生成一個DLL),另一個用於你的可執行文件,你的單元測試駐留在那裏。然後查看項目依賴關係(在VS2010上的項目菜單下,不確定大約2012年),使EXE依賴於DLL(這將確保EXE在必要時重建/重新鏈接)。

右鍵單擊解決方案資源管理器中的EXE項目,然後選擇屬性。在那裏你可以設置includes/linker來獲取你的頭文件/ lib文件(如果需要的話可能不需要)如果你明確地使用了LoadLibrary或者其他東西,但是我猜你沒有這麼做)。

現在在構建事件下的EXE的項目設置中,添加一個運行測試的構建後事件。請注意,如果您的EXE從main()返回的值不是0,則VS可以將其報告爲構建中的錯誤。

+0

「右鍵單擊解決方案資源管理器中的EXE項目,然後選擇屬性。如果需要,您可以設置包含/鏈接器以訪問頭文件/ lib文件」,您可以解釋如何/在哪裏做到這一點? – 2013-02-19 02:42:21

+1

在常規選項卡的C/C++屬性中,添加包含目錄。在那裏你可以確保列出你的頭文件夾 - 可以是完整的或相對的路徑,或使用像$(SolutionDir)這樣的宏。然後,在鏈接器設置下,在一般情況下(大約下降一半),在您的附加「附加庫目錄」。然後在鏈接器的輸入頁面中,確保列出了與您的DLL對應的.lib。再次,使用宏來協助,並確保您爲Debug和Release執行操作,指向每個文件夾的正確輸出文件夾。 – metal 2013-02-19 02:51:41