如何解决链接器命令程序在clang ++中通过使用模板失败
我的文件如下:
main.cpp
#include "mylib.hpp"
// template <typename T>
// T add(T a,T b)
// {
// return a + b;
// }
int main(int argc,char const *argv[])
{
int result = add(90,4);
cout << result << "\n";
return 0;
}
mylib.hpp
#ifndef MYLIB_HPP
#define MYLIB_HPP
#include <iostream>
#include <cstdlib>
#include <fstream>
using std::cout;
using std::cin;
template <class T>
T add(T a,T b);
#endif
mylib.cpp
#include "mylib.hpp"
template <class T>
T add(T a,T b)
{
return a + b;
}
Makefile
a.out: main.o mylib.o
clang++ -std=c++17 main.o mylib.o
main.o: main.cpp mylib.hpp
clang++ -c -std=c++17 main.cpp
mylib.o: mylib.cpp mylib.hpp
clang++ -c -std=c++17 mylib.cpp
没有模板,或者当我在main.cpp(无多文件程序)中使用该功能时,一切工作正常,但是当我将其拆分为多个文件时,会出现以下错误。
clang++ -c -std=c++17 mylib.cpp
clang++ -std=c++17 main.o mylib.o
Undefined symbols for architecture x86_64:
"int add<int>(int,int)",referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [a.out] Error 1
如何解决此错误?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。