1
我有一些我試圖編譯到外部靜態庫的類。我linked_list.hpp(用於linked_list我試圖編譯頭)的樣子:具有外部實現的編譯模板到靜態庫
#include "list_base.hpp"
template <typename T>
class Linked_list : public List_base <T> {
public://
Linked_list();
~Linked_list();
public://accessor functions
Linked_list<T> * next();//go to the next element in the list
Node<T> * get_current_node() const;//return the current node
T get_current() const;//get the current data
T get(int index) const;//this will get the specified index and will return the data it holds
public://worker functions
Linked_list<T> * push(T value);//push a value into the front of the list
Linked_list<T> * pop_current();//deletes the current_node--resets the current as the next element in the list!
Linked_list<T> * reset();//this resets the current to the front of the list
Linked_list<T> * erase(int index);
private://variables
Node<T> * current;//store the current node
};
#include "linked_list.cpp"//grab the template implementation file
#endif
所有我的代碼頭去在「頭」目錄和實施雲在執行文件夾我有。這些作爲-I目錄傳遞。編制這個樣子的
我make文件命令:
static: $(DEPENDENCIES)
ar rcs liblist_templates.a node.o list_base.o linked_list.o
,並在運行它給我這個錯誤...
/usr/bin/ranlib: warning for library: liblist_templates.a the table of contents is empty (no object file members in the library define global symbols)
我創建了包括「linked_list主頭文件.hpp「和其他一些庫,但是每當我包含它,它似乎仍然在尋找包含的cpp文件。我在做什麼錯?我想創建一個便攜式庫,我可以從此代碼中將其放入現有項目中。
還應該注意的是,'linked_list.cpp'需要使用'Linked_list'來包含任何翻譯單元。 –
它看起來'linked_list.cpp'已經在'linked_list.hpp'中包含了'#include'd,因此客戶端代碼只需要包含頭文件。 – Francesco
哈哈 - 是的,那是真的。錯過了。 –