热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

老生常谈之widows下link错误

由于之前一直从事linux下的嵌入式开发,对于windows下的工程环境配置,lib链接,dll链接等等都不是很敏感。经过一些时间的摸索和实践,基本的一些配置选项都玩得差不多了。对于

         由于之前一直从事linux下的嵌入式开发,对于windows下的工程环境配置,lib链接,dll链接等等都不是很敏感。经过一些时间的摸索和实践,基本的一些配置选项都玩得差不多了。对于常见的错误都能知道怎么去下手解决,但最近把项目把移植到64位操作上,重新编译所有的dll的时候。发现几个link问题还是不能很快的解决,几个链接的错误摸索了好几天,最后都是因为配置问题引起的,各种郁闷,原来VS下面果真没有linux来的那般方便。跑偏了,言归正传,总结一下遇到的几种比较典型link的错误,
1、查看库的引导路径以及库的名称,如果是导入DLL的话,注意DLL导出接口的lib库文件。配置如下:

                                         

  左边配置好需要的路径,右边加载需要的库文件的名称即可。
一般情况下如果配置好上面的情况并且在工程目录加入dll的话,程序就能正常运行了,这也是大多数论坛上回复很多人link错误的答案。但是有时候其他的配置没有匹配的话,也会link错误的。

2、注意宽字节问题。先来看看我自己链接时候的错误

     

  出现这个错误的时候,刚开始我也是莫名其妙的,因为我对于第一条中提到的配置问题,我都已经设置好了,确认没有问题的。后来怀疑编译这个开源的时候没有成功导出接口,所以又借助Depends看了下,如下图:

 

发现接口也都成功导出了呀,并没有什么问题。后来思量再三,问了下老大,结果他看了半天也是无从下手。后面没有办法,老大竟然对比了函数导出名称后面的数字竟然发现是不同的,我也仔细看了,红色框框部分,确实不同,姜果然是老的辣,一语击中要害。原来我生成的dll设置了宽字节,而链接这个dll的时候不需要没有,导致出现链接不上,又来修改了设置如下:


修改后,编译连接成功。纠结了蛮久的问题终于解决。这也是link错误的一个比较隐藏的错误。

当然在其中还有另外两个地方的设置,也会引起link的错误的。

3、字节编码的设置问题

   

4、RunTime Library的设置问题

 

各个选项的具体说明可以参考David的博客,说的比较清楚,这里的设置问题也会引起link错误。

            最后总结下,link错误千千万,很多情况都会出现各种纠结的link问题,遇到问题不要急躁,细心仔细对比,首先确认链接问题,然后是否成功导出,查看导出和调用接口差异,确认各个可能引起链接错误的配置信息等等,一步一步缩小范围。



推荐阅读
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 本文介绍了如何查看PHP网站及其源码的方法,包括环境搭建、本地测试、源码查看和在线查找等步骤。 ... [详细]
  • 无法启动此程序因为计算机丢失d3dx9,无法启动此程序.因为计算机中丢失d3dx9_43.dll.尝试重新安装改程序以解决问题...
    无法启动此程序.因为计算机中丢失d3dx9_43.dll.尝试重新安装改程序以解决问题以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的 ... [详细]
  • 本文介绍了Java编程语言的基础知识,包括其历史背景、主要特性以及如何安装和配置JDK。此外,还详细讲解了如何编写和运行第一个Java程序,并简要介绍了Eclipse集成开发环境的安装和使用。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • 2009年12月28日,易语言公司正式推出了“易语言5.0静态编译测试版1”,这一版本标志着易语言在技术上的重要突破。与之前的4.x版本相比,5.0测试版1引入了静态编译功能,显著提升了程序的运行效率和安全性。此外,新版本还优化了代码生成机制,增强了语言的表达能力和兼容性。自发布以来,用户反馈非常积极,普遍认为新功能带来了更加流畅的开发体验。 ... [详细]
author-avatar
贱男人少勾引天d_483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有