热门标签 | 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问题,遇到问题不要急躁,细心仔细对比,首先确认链接问题,然后是否成功导出,查看导出和调用接口差异,确认各个可能引起链接错误的配置信息等等,一步一步缩小范围。



推荐阅读
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了win7系统休眠功能无法启动和关闭的解决方法,包括在控制面板中启用休眠功能、设置系统休眠的时间、通过命令行定时休眠、手动进入休眠状态等方法。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • Python中sys模块的功能及用法详解
    本文详细介绍了Python中sys模块的功能及用法,包括对解释器参数和功能的访问、命令行参数列表、字节顺序指示符、编译模块名称等。同时还介绍了sys模块中的新功能和call_tracing函数的用法。推荐学习《Python教程》以深入了解。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 本文介绍了Java调用Windows下某些程序的方法,包括调用可执行程序和批处理命令。针对Java不支持直接调用批处理文件的问题,提供了一种将批处理文件转换为可执行文件的解决方案。介绍了使用Quick Batch File Compiler将批处理脚本编译为EXE文件,并通过Java调用可执行文件的方法。详细介绍了编译和反编译的步骤,以及调用方法的示例代码。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了连接库的定义和使用方法。连接库是通过编译生成的dll文件,例如php_mysql.dll。在使用扩展时,需要去掉配置文件中的分号,并通过phpinfo查看是否正确加载了mysql连接库。详细内容请参考链接:https://www.cnblogs.com/xiaobiaomei/p/7654750.html。摘要字数:180字。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • 本文介绍了在Windows系统下,下载并解压lua5.3后得到的四个文件:lua53.dll, lua53.exe, luac53.exe和wlua53.exe的功能。其中,前三个文件的作用已知,但对于wlua53.exe的具体用法,作者通过查阅资料得出该文件与图形界面的窗口相关,但未找到相关说明。因此,作者希望能够请教关于wlua53.exe的具体用法。 ... [详细]
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社区 版权所有