当前位置: 技术问答>linux和unix
关于G++泛型问题
来源: 互联网 发布时间:2016-08-01
本文导语: 简单描述就是:在自己的一个LIB中的某个函数A中使用了一个自己定义的泛型函数,然后再自己的主程序中调用LIB中的那个 A函数,就会出现找不到泛型函数的错误。 下面是详细的描述: 我在一个头文件中定义了一个...
简单描述就是:在自己的一个LIB中的某个函数A中使用了一个自己定义的泛型函数,然后再自己的主程序中调用LIB中的那个
A函数,就会出现找不到泛型函数的错误。
下面是详细的描述:
我在一个头文件中定义了一个泛型函数
比如
然后在另外一个CPP中的某个函数中使用了他
再把这个CPP编译链接到一个LIB中
g++ -g -Wall -ansi -D_LINUX -D_DEBUG -c -o time_t.o time_t.cpp
ar rv Core_Common_TimeSystem_Debug_Linux.a time_t.o
ar: creating Core_Common_TimeSystem_Debug_Linux.a
a - time_t.o
g++ -g -Wall -ansi -D_LINUX -D_DEBUG -c -o MyTimer.o MyTimer.cpp
ar rv Core_Common_TimeSystem_Debug_Linux.a MyTimer.o
a - MyTimer.o
最后在MAIN的CPP中,使用了这个函数
生成可执行文件的时候告诉我找不到fun2
undefined reference to `fun2(int)'
但是,如果我在主程序中加入一次直接对fun的调用就OK了
比如
就可以成功,并且执行后结果也是完全正确的
请问这个是什么原因?有什么解决方法吗?
A函数,就会出现找不到泛型函数的错误。
下面是详细的描述:
我在一个头文件中定义了一个泛型函数
比如
template
void fun(T t)
{...
};
然后在另外一个CPP中的某个函数中使用了他
void fun2()
{
int a = 5;
fun(a);
}
再把这个CPP编译链接到一个LIB中
g++ -g -Wall -ansi -D_LINUX -D_DEBUG -c -o time_t.o time_t.cpp
ar rv Core_Common_TimeSystem_Debug_Linux.a time_t.o
ar: creating Core_Common_TimeSystem_Debug_Linux.a
a - time_t.o
g++ -g -Wall -ansi -D_LINUX -D_DEBUG -c -o MyTimer.o MyTimer.cpp
ar rv Core_Common_TimeSystem_Debug_Linux.a MyTimer.o
a - MyTimer.o
最后在MAIN的CPP中,使用了这个函数
int main()
{
fun2();
}
生成可执行文件的时候告诉我找不到fun2
undefined reference to `fun2(int)'
但是,如果我在主程序中加入一次直接对fun的调用就OK了
比如
int main()
{
int b = 3;
fun(b);
fun2();
}
就可以成功,并且执行后结果也是完全正确的
请问这个是什么原因?有什么解决方法吗?
|
在函数模板的定义前加export
export template
void fun(T t)
{...
};
|
模板要特化一下。
|
lz 给的示例代码的话,加上函数声明后编译是没有问题
还是再检查一下实际的代码
还是再检查一下实际的代码
|
期待、、、、
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。