VS编译链接错误集锦-创新互联

1 场景

创新互联公司致力于互联网品牌建设与网络营销,包括成都网站制作、做网站、外贸营销网站建设、SEO优化、网络推广、整站优化营销策划推广、电子商务、移动互联网营销等。创新互联公司为不同类型的客户提供良好的互联网应用定制及解决方案,创新互联公司核心团队10年专注互联网开发,积累了丰富的网站经验,为广大企业客户提供一站式企业网站建设服务,在网站建设行业内树立了良好口碑。

    在同一个解决方案中,testdemo主程序模块会调用动态链接库zlib,因此在testdemo的项目中进行如下的属性设置:

链接器>输入>附加依赖项:zlib.lib

链接器>常规>附加库目录:..\outputs\release\lib

在重新生成解决方案的时候,会出现如下的错误:无法打开输入文件

步骤

    查看到已经生成了zlib.lib文件,并且所有的环境配置正确,然后查看完整的编译过程,发现编译的次序不正确,首先编译testdemo主程序,然后再编译zlib模块,当然会出现问题

解决

    点击testdemo项目,鼠标右键选择项目依赖项,选择zlib,确保首先编译zlib,最后编译主程序

问题2:fatalerror LNK1112: 模块计算机类型“MIPS”与目标计算机类型“THUMB”冲突

参考:http://www.jb51.net/softjc/83192.html

解决方案:请选择与解决方案相同的编译平台。

问题5:CXX0017: 错误: 没有找到符号test1d.dll  test2d.dll

解决方案:由于解决方案中有些模块提供的是release版本的dll,所以无法将整个工程置于debug模式

,从debug调试出错的信息中最后的d代表的是debug调试版本的dll。所以

必须在解决方案配置中选择release

问题6:项目源码非常多,如果修改一个文件代码选择重新生成解决方案大概需要花费15分钟的时间,

目前没有测试过生成解决方案是否可以减少编译和链接的时间?

解决方案:修改某个文件之后不需要重新生成解决方案,然后直接开始执行调试,自动将修改的文件重

新编译。

问题7:error LNK2001: 无法解析的外部符号 "public: virtual class  CTest::TCodeEntry const *

__thiscall CTest::CTestImpl::GetItemByCode(unsignedint)" (?GetItemByCode@CTest@CTestImpl

@@UAEPBVTCodeEntry@2@I@Z)   testimpl.obj

解决方案:遇到这个问题,表示在链接的过程中,没有找到真正的实现,通过半小时的查阅代码发现如

下的问题:

引用class A

在函数Func(A a)中进行了调用,在实际的过程中,A被定义为了struct结构体类,这个时候链接的过程

中,就没有办法找到class A,这一点应该注意。

  在实际的过程中,务必注意真正的实现和声明是否一致,这个非常重要。

问题8:error C2259TestQuery::CtestQueryImpl :can not instantiate abstract calss

解决方案:首先了解虚基类作为接口,所有的纯虚函数必须在子类中实现,否则编译出错,然后查看当

前的编译错误提示,说明目前的虚基类无法实例化,说明有纯虚函数没有实现,通过半个小时的代码查

阅,发现是子类的函数声明和基类的函数声明参数列表不一致,说明在拷贝代码的过程中出现错误,或

者修改代码,但是基类代码没有同步

1)查看继承的基类到底有多少个,这些基类的纯虚接口是否已经实现

2)查看派生类中是否有函数携带了=0的纯虚接口

3)最好的方法是删除以前的代码,重新编写一遍,语法的错误,无法在VS中显示。

问题9:无法打开包括文件: “corecrt.h”: No such file or directory

VS2013下编译jsoncpp正常,但是VS2015编译出现上面的错误,需要在包含路径中添加如下:

 C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt

问题10:runtime error! abnormal program termination

说明:在安装VS2015的环境下,正常运行,在已有的环境,只是替换一下可执行程序,出现如上的错误,初步怀疑是某些动态库没有更新,因此重新拷贝所有的动态库,只是配置文件没有改动,暂时没有发现上面的问题

问题11:'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS

解决方式一:在调用函数的文件头部,调用预编译宏#pragma warning(disable:4996)

解决方式二:C/C++预编译器中填写_CRT_SECURE_NO_WARNINGS

可以采用strcpy_s函数,VS提供的安全拷贝函数,第二个参数指定了目标缓冲区的大小,如果源缓冲区过大,将会进行截取

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:VS编译链接错误集锦-创新互联
URL分享:http://scyanting.com/article/iecjo.html