2010-02-16 70 views
1

我試圖創建一個靜態庫使用Visual Studio 2005,由多個頭文件和源文件,例如:從多個.h/.cpp文件(Visual Studio 2005)創建靜態庫?

A-> B,A-> C,A-> d B->電子

(A-> B = B是#包括-d在A)

我設法通過遵循MSDN tutorial編譯靜態庫,並把所有的文件,在Visual Studio項目文件,並編制了的.lib。問題是,我只希望其他人能夠訪問一個頭文件(A),而不是其他人,但是因爲A包含其他文件,所以在我編譯了庫並試圖在另一個項目中使用它時,包括A的靜態庫和頭文件,它說它找不到B,C,D和E的頭文件。有沒有辦法解決這個問題?

一種方法(不是最優雅,最簡單的方法),我以爲是把所有的代碼爲一組的頭/源文件,但是這是一個大量的工作,可以得到相當棘手......

回答

0

不是沒有重構。

創建庫時,我喜歡將我的頭庫安排到公共和私有頭文件中。你可以有一個私人頭包括一個公共頭,但反之亦然。

您將需要清理頭文件以清楚地分離API的公共部分和私有部分。

不幸的是,不知道爲什麼你的頭文件的結構是這樣的,我不能提供更具體的建議。

+0

這些代碼被設計爲非常模塊化(由我之前在其上工作的人),這意味着做不同事情的函數都在他們自己的文件中。例如,我的主要文件是「math.h/math.cpp」,那麼我可能會有另外四個名爲「add」,「subtract」,「multiply」和「divide」的集合。我的主頭文件會是這樣的: 的#include「添加」 的#include「減」 ... 命名空間數據{ 類MYMATH { ... 也許不是最好的例子,但我希望你明白我的意思。 看起來我會有一些難題要做:( –

+0

嗨,你可以給我一個例子或私人和公共頭的鏈接嗎?我有一個快速閱讀,並從這裏得到的一般概念: http://os.inf.tu-dresden.de/~hohmuth/prj/preprocess/,但它包含公共標題中的私人頭文件,這就是讓我感到困惑的東西......非常感謝!:) –

0

在設計庫時,重要的是將要公開的接口從庫的實現中分離出來。

只需創建一個包含要展示給圖書館用戶的東西的頭文件,或者只是沒有包含其他頭文件。