2011-02-07 43 views
1

我有兩個項目的解決方案在這:一種是簡單的DLL有一個簡單的類(dll_test)。第二個項目引用了dll項目,應該用來測試dll項目(dll_tester)。該dll項目建立良好,但測試人員項目總是抱怨無法找到dll_test。 lib而不是dll_test。 dll喜歡它應該。Visual Studio 2008 C++。問題引用DLL項目

再次,這是與Visual Studio 2008在Windows 7機器上。我不認爲這有什麼不同,但我使用dll_test項目啓動了解決方案,並稍後添加了dll_tester項目。

有誰知道如何解決這個問題?

+0

只是爲了澄清,並添加** ** dll_test.lib到屬性 - >連接器 - >輸入和其屬性 - >連接器 - >附加庫目錄路徑? – 2011-02-07 13:19:40

+0

不,我沒有。但它不應該創建一個庫,它應該是創建一個DLL。 – 2011-02-07 13:21:35

回答

1

啊,在Visual Studio中的DLL和依賴的樂趣。我發誓,C#程序員有它容易:)

你肯定的是,LIB文件實際上產生的?如果你的DLL項目沒有導出任何符號,你將不會得到一個lib文件,而且你不會有任何東西要鏈接到。所以,你需要確保:

  1. 你的DLL項目定義類似MYPROJECTNAME_EXPORTS。 Visual Studio在創建項目時檢查相應的框時爲您定義了此符號。如果你沒有這樣做,那很簡單。確保上述符號在預處理指令爲DLL,並在一個共同的頭文件確保以下定義:

    #if defined(MYPROJECTNAME_EXPORTS) 
    #define MYPROJECT_API __declspec(dllexport) 
    #else 
    #define MYPROJECT_API __declspec(dllimport) 
    #endif 
    
  2. 一旦我們知道這MYPROJECT_API適當的定義,我們需要確保這是我們希望出口任何種類或功能,具有在它的聲明:

    class MYPROJECT_API SomeClass 
    { 
    }; // eo class SomeClass 
    

,並且該類需要實現和實際東西的編譯器沒有優化掉。

總之,你不能找到一個.lib文件的原因是因爲生成沒有,因爲沒有符號是從它導出。

0

右鍵單擊dll_tester在Solution Explorer中,並期待「項目依賴......」,並確保該DLL項目被選中