我試圖將我的應用程序與創建的靜態庫鏈接起來。儘管任何全局函數和類方法都沒有問題,但鏈接到名稱空間中聲明的函數會生成錯誤「未定義的對[namespace] :: function的引用」。下面是例子:鏈接到命名空間中的函數時發生GNU鏈接器錯誤
包括文件包含:
void global_function (void);
namespace vm
{
void my_namespace_function (void);
class some_class
{
static void my_class_function (void);
}
};
CPP文件包含此:
using namespace vm;
int main()
{
global_function(); // this is fine
some_class::my_class_function(); // this is fine
my_namespace_function(); // "undefined reference to vm::my_classless_function()"
return 0;
}
是的,我沒有檢查VM :: my_namespace_function()是否實際上是一個庫中。
感謝您的幫助。
因此,**你是如何編譯/鏈接此代碼? (如果忘記包含.o文件,或者正在使用靜態庫並且鏈接順序錯誤,這一點很重要) – nos 2011-03-11 17:35:20
'some_class :: my_class_function();'怎樣才能正常工作?默認情況下是不是靜態私有? – user634618 2011-03-11 17:44:04