lnk1120-vs2010运行程序报错:error LNK2019: 无法解析的外部符号

问题描述

vs2010运行程序报错:error LNK2019: 无法解析的外部符号
如题,我在vs2010环境下做C++练习题时出现该错误。程序代码如下:

 //array.h#ifndef ARRAY_H#define ARRAY_Htemplate<typename T>class Array{public:    Array(int n);//数组首地址不用指定,待会分配    Array(Array &a);    ~Array();    T getAt(int i);//返回第i个数组元素    void setAt(T xint i);//将第i个元素设置为xprotected:private:    T *array;//数组首地址    int length;//数组长度};#endif//array.cpp#include ""array.h""template<typename T>//所有成员函数前必须加模板声明Array<T>::Array(int n)//成员函数类名后需加<T>{    array=new T[n];    length=n;}template<typename T>Array<T>::Array(Array &a){    length=a.length;    array=new T[length];    for(int i=0;i<length;i++)        array[i]=a.array[i];//数据复制}template<typename T>Array<T>::~Array(){    delete []array;}template<typename T>T Array<T>::getAt(int i){    return array[i];}template<typename T>void Array<T>::setAt(T xint i){    array[i]=x;}//test.cpp#include ""array.h""#include <iostream>using namespace std;void main(){    int a[]={12345};    double b[]={00.51.01.52.0};    Array <int>a1(5);//使用时必须指明传递给类模板的数据类型    Array <double>b1(5);//必须分两行写    for (int i=0;i<5;i++)    {        a1.setAt(a[i]i);//数据拷给对象        b1.setAt(b[i]i);    }    Array <int>a2(a1);    for (int i=0;i<5;i++)    {        cout<<a1.getAt(i)<<""  ""<<a2.getAt(i)<<""  ""<<b1.getAt(i)<<endl;    }}

具体的报错信息如下:
c: __thiscall Array::~Array(void)"" (??1?$Array@N@@QAE@XZ),该符号在函数 _main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 ""public: __thiscall Array::~Array(void)"" (??1?$Array@H@@QAE@XZ),该符号在函数 _main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 ""public: int __thiscall Array::getAt(int)"" (?getAt@?$Array@H@@QAEHH@Z),该符号在函数 _main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 ""public: double __thiscall Array::getAt(int)"" (?getAt@?$Array@N@@QAENH@Z),该符号在函数 _main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 ""public: __thiscall Array::Array(class Array &)"" (??0?$Array@H@@QAE@AAV0@@Z),该符号在函数 _main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 ""public: void __thiscall Array::setAt(doubleint)"" (?setAt@?$Array@N@@QAEXNH@Z),该符号在函数 _main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 ""public: void __thiscall Array::setAt(intint)"" (?setAt@?$Array@H@@QAEXHH@Z),该符号在函数 _main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 ""public: __thiscall Array::Array(int)"" (??0?$Array@N@@QAE@H@Z),该符号在函数 _main 中被引用
1>test.obj : error LNK2019: 无法解析的外部符号 ""public: __thiscall Array::Array(int)"" (??0?$Array@H@@QAE@H@Z),该符号在函数 _main 中被引用
1>D:vsprojectschaper5array3Debugarray3.exe : fatal error LNK1120: 9 个无法解析的外部命令

补充:我将上述代码改写到同一个cpp文件中,发现问题解决。
我重新建立过项目和文件,确定不是建错工程、建错文件等情况。望各位给出一些方向,谢谢!

解决方案

我将上述代码改写到同一个cpp文件中,发现问题解决引用头文件中包含了类,
和一些函数声明
而主函数调用的时候是找不到函数体的(默认去系统函数库去找)、
找不到所以链接错误

时间: 2024-10-03 14:13:14

lnk1120-vs2010运行程序报错:error LNK2019: 无法解析的外部符号的相关文章

tomcat-myeclipse Tomcat7.0运行程序报错,起初是没有问题的

问题描述 myeclipse Tomcat7.0运行程序报错,起初是没有问题的 上周出现的问题,百度不到解决办法,重装了myeclipse,并且换了一个tomcat,不知怎么的突然能运行了,现在一看,又报相同的错 解决方案 java.lang.NoClassDefFoundError: Could not initialize class org.springframework.beans.factory.BeanCreationException at org.springframework.

ios-xcode运行程序报错,求大神指条路

问题描述 xcode运行程序报错,求大神指条路 ld: cannot link directly with /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/usr/lib/system/libunwind.dylib. Link against the umbrella framework 'System.fram

短信-android运行程序报错,eglSufaceAttrib not implemented

问题描述 android运行程序报错,eglSufaceAttrib not implemented 这个报错是什么问题? W/EGL_emulation﹕ eglSurfaceAttrib not implemented. 初学者想写个读取手机短信的程序,上面那个错误搞不定,网上找的都有点问题跑不动,有没有人直接帮我写一个,能在后台显示结果就行,能在手机界面上显示更好啊 解决方案 eglSufaceAttrib没有实现 解决方案二: android的程序报错,error: Error: Str

osg vs2012-OSG使用VS2012报错error LNK2019

问题描述 OSG使用VS2012报错error LNK2019 #include #include #include int main() { osg::ref_ptrosgViewer::Viewer viewer = new osgViewer::Viewer; viewer->addEventHandler(new osgViewer::StatsHandler);//加上这一句就错 viewer->setSceneData(osgDB::readNodeFile("cow.o

android studio-as上用build variant release方式运行程序报错

问题描述 as上用build variant release方式运行程序报错 android studio在build.gradle上配置好签名文件,然后build variant release方式运行程序报错,可是我用过可视化界面上打包签名程序,然后指定签名文件,输入密码啊结果是能出来一个release包,但是就是用过variant-release的方式直接运行就报错,卡了好久,有哪位大神帮下,错误见图. 解决方案 mongoDB报错Cannot find module '../build/

ubuntu-Myeclipse集成Hadoop运行程序报错: Input path does not exist

问题描述 Myeclipse集成Hadoop运行程序报错: Input path does not exist 各位大神,求问~~ 我在win7-VMware-Ubuntu下搭建了Hadoop伪分布环境,在win7下安装了Myeclipse,并集成Hadoop,运行程序时报如下错: 但hdfs中有_LPH.txt这个文档: 问题可能出在哪里?叩谢~~~ 解决方案 org.apache.hadoop.mapreduce.lib.input.InvalidInputException:input p

VS2010 error LNK2019: 无法解析的外部符号

问题描述 VS2010 error LNK2019: 无法解析的外部符号 程序如下: #include #include #include #include #include #include #include #include #include #include "cuda_runtime.h" #include "device_launch_parameters.h" #include "cuda_runtime.h" #include #i

error LNK2019: 无法解析的外部符号 _deflate

我的环境为: Win764 + VS2005 + zlib1.2.8 zlib1.2.8我使用VS2010来编译. ------------------------------------------------------------------------------------------------- 我导入zlib库的代码如下: #include "zlib128/zlib.h"// #pragma comment(lib, "zlib128/zlibwapi.li

linkerror-1&amp;amp;gt;Generic.obj : error LNK2019: 无法解析的外部符号

问题描述 1>Generic.obj : error LNK2019: 无法解析的外部符号 //Generic.cpp #include // 每一个 Windows 程序都需要包含此档 #include "resource.h" // 內含各个 resource IDs #include "Generic.h" // 本程序之含入档 HINSTANCE _hInst; // Instance handle HWND _hWnd; char _szAppNam