记一次C++编程引用obj文件作为静态库文件
简介
常用静态库文件的名字一般是 ***.lib
,例如 nisyscfg.lib
就是一个静态库文件,但是一个例程居然是引用 **.obj
文件作为静态库,有点非常规啊。
这是一个NI488.2 的例程,其中一个例程的说明文档如下:
Microsoft Visual C++ (64-bit) With Microsoft Visual C++ (Version 8.0 or higher), this is done by typing in using the 64-bit environment:
cl /I"%NIEXTCCOMPILERSUPP%\include" 4882query.c "%NIEXTCCOMPILERSUPP%\lib64\msvc\ni4882.obj" /MD
在编译命令中可以看出需要设置示例程序包含的头文件路径、库文件路径即可。这里的库文件是 ni4882.obj。按照文档说明设置工程:
unresolved external symbol
新建一个命令行工程,它原本只能输出 Hello World!!!,我打算把示例程序的入口函数改名字为 int __cdecl entry_4882query(void)
作为一个函数引入到命令行 main()
函数中,直接编译却出现了这个错误,一头雾水。
思考了一会儿,刚刚新建工程是 C++
工程,但示例工程全部都是 C 语言写的,难道是这里出现了问题,所以我打算在示例工程源文件收尾加一些东西,如下:
#include "ni4882.h" #ifdef __cplusplus extern "C" { #endif int __cdecl entry_4882query(void) { //..... } #ifdef __cplusplus } #endif
然而编译之后还是出错。
最后借助于必应,才明白原来源文件和头文件都需要加上 __cplusplus
标记才行。
电脑和仪器之间通过GPIB卡连接,仪器上电执行结果如下:
仪器断电执行结果:
总结
- 不要陷入思维误区,一提起静态库文件就是
*.lib
有可能厂商提供的就是一个*.obj
文件; - C代码与C++代码兼容性的问题,新手踩坑太少,遇到啥问题都是新问题。
原文出处:https://www.cnblogs.com/LinTeX9527/p/11045815.html
- 记一次C++编程引用obj文件作为静态库文件
- django使用js或者图片等静态文件的引用方法
- OBJ文件解析之静态链接的效果
- Firefox 插件 JSview是一套比较实用的JS,CSS文件查看工具,很方便,很快捷地查看页面引用了哪些文件,作为Web前端开发者是一套必备的插件,由于Firefox升级过快,插件很快不兼容了,这里对插件做了一些调整,可以兼容最新Firefox浏览器(目前FireFox 21)
- 静态资源打包:一个javescript 的src引用多个文件,一个link引用多个CSS文件
- Django web server: html引用静态文件(css, js)
- spring idea 引用静态文件 CSS IMG等
- IOS引用的静态库里包含category文件出现“unrecognized selector”的解决办法
- 如何在pom文件引用其他项目作为JAR包
- 静态编译FFMPEG的指令并在工程引用.a文件
- spring mvc与html中处理引用js等静态文件的问题
- iOS项目引用静态库文件.a
- 优化网站设计(八):将脚本文件和样式表作为外部文件引用
- 使用nginx作为静态文件服务器
- 使用nginx作为css,js,image静态文件的服务器
- 在vs中用C++编程的方式生成.dll文件和以动态、静态调用dll中函数
- freemarker之ftl文件中引用静态资源的问题
- 【jetty】jetty作为maven插件,解除JS/CSS等静态文件锁定
- VS2008引用.lib静态库文件
- 模板变量,过滤器和静态文件引用