【DSP开发】DSP能用VS2010生成的链接库文件吗?
【DSP开发】DSP能用VS2010生成的链接库文件吗?
声明:引用请注明出处http://blog.csdn.net/lg1259156776/
说明:可能这个问题让行家看上去就会莞尔一笑,但是很多时候在开发中经常被这种莫名其妙的想法给迷住,实际上是对其中涉及到的一些基本概念和原理不太清楚所致,本文将对这个问题进行详细的分析。
我们有时说C/C++语言是源码级别的跨平台,主要是指的是在不同的操作系统平台上,编译器所支持的语法是相同的,对应的函数接口是相同的,但是对应到下面的库文件、可执行文件则是平台相关的。这也就是为何安装配置opepcv的时候,利用cmake生成相应的平台下的工程文件或者makefile,然后进行编译运行,生成对应平台相关的库文件。而库文件实际上参与到链接的阶段,基本上算是等同于经过了编译、汇编后生成的目标文件(.o或.obj),而经过汇编之后生成的就是对应的机器码了,所以说库文件是平台相关的。
明白了上面的道理,我们来看这个问题,实际上就直接不是问题了,因为VS2010生成的是windows下的机器码,而CCS3.3或CCS5.4生成的是DSP目标处理器上的机器码。这两个平台根本不一样。
举个例子,运行时库,对应的DSP的不同平台,其运行时库都不一样,更别提windows了。运行时库中就包含着对应C语言规范中定义的各种库函数等等。
所以,想直接利用VS2010生成的库,那可能没那么简单。不妨可以试一试,利用VS2010生成一个简单的函数库,实现加法,然后将生成的库拷贝到DSP开发环境CCS工程下,包含引用,并参与编译链接,看看能否编译通过,并且成功下载到DSP运行。
这里还要说明一点,我现在并不太清楚对DSP是不是有动态链接库的概念,可能也有,但感觉好像得是静态链接库才行?这一点存疑,具体编译原理还没有弄太懂,回头再补上。
最好的方法,还是将对应的源文件,拷贝到CCS中,创建生成库的工程,修改代码重新编译链接后生成相应的库,然后才能安心的使用。
感觉:有点没太理解这个内容,现在发现越来越迷糊,这文章估计不对说的。不,很难讲!
在windows下配置了gcc,然后可以生成可执行文件.exe,这个exe文件到底是啥?真的是所谓的机器码,二进制码吗?怎么感觉不像呢?exe真的是运行在硬件之上吗?哭了!
【2015-10-22增】经过初步测试,使用CCS编译生成的静态链接库,使用MinGW基于windows下的gcc进行链接,使用命令ar t xx.lib可以解析出对应的obj文件,也可以通过ar -v -x xx.lib将目标文件解析出来。但是再进行解读obj文件时会发生错误,说是没有组织。而且在调用这个库中的文件时,也会出现问题没有发现对应函数的问题。
这说明了一个问题,就是不同的编译器在同一个操作系统之上采用的归档格式可能是一样的,因此可以解析出lib文件中所包含的obj文件,但是obj文件却是与目标处理器相关的。CCS生成的obj文件中包含的是对应DSP64xx的机器码,而MinGW的gcc则包含的是intel的处理器的机器码。所以库文件是编译器、处理器、操作系统相关的,并不能通用,而只能实现对应相同的函数接口,在不同的平台上(指的是编译器、处理器、操作系统)上要有相对应的库文件才能使用。
另外,还想再说一点,对于库,要注意以下几点:
1. 静态还是动态?
2. 导出函数与导出全局变量的声明和定义方式;
3. 动态链接库的入口函数定义;
2015-10-25心得总结 张朋艺
【DSP开发】DSP能用VS2010生成的链接库文件吗?的更多相关文章
- 【Linux开发】【DSP开发】利用CCS6.1生成out文件的同时生成bin文件
[Linux开发][DSP开发]利用CCS6.1生成out文件的同时生成bin文件 标签:[DSP开发] [Linux开发] 尝试在windows上安装的CCS6.1开发AM4378-Linux下的应 ...
- 基于FPGA视频时序生成中的库文件
上一篇分享了一个视频时序生成代码,下面我根据之前项目中用到的时序,对各个参数做了库文件,方便调用. -- -- Package File Template -- -- Purpose: This pa ...
- IOS开发:使用lipo合并armv7,i386,armv7s库文件
假设多个版本的lib分别是 libxxx.armv7.a , libxxx.armv7s.a, libxxx.i386.a我们的目标是 把他们合并成超级通用版的libxxx.a 打开命令行 Term ...
- g++ 生成C++ .so库文件,并调用示例
Tags: g++ C++ so library 在Linux系统下用g++命令编译C++程序.也可以生成so,a链接库 示例一 编译时链接so库 Test.h 文件内容 Main.cpp ...
- VS2008 生成静态链接库并使用
1.启动VS2008创建一个Win32控制台程序 2.选择静态库 3.创建两个文件lib.h和lib.cpp //lib.h #ifndef LIB_H #define LIB_H int add(i ...
- Cocos2d-x 开发 v3.2 建立新项目并添加库文件
一.添加其它类库 3.0以上的设计耦合性强,项目中模块常以库的形式存在,需常添加链接库.在3.0中经常用到CocoStudio 编辑器的资源数据,所以需要添加CocoStudio 库. 1.1 ...
- Makefile 自动搜索 c 和 cpp 文件, 并生成 .a 静态库文件
最近 又弄linux 下的 .a 静态库编译, 于是想 做个 一劳永逸的Makefile, 经过一番折腾, 最后成功了 只需要 改两个 参数 就可以执行了(MYLIB 和 VPATH), 代码 如下: ...
- 【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程
[DSP开发]利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:前端是时间基于VS ...
- VS2010编译Boost 1.57 静态链接库
http://www.cnblogs.com/cuish/p/4175491.html 0.前提 Boost库版本 1.57.0 下载地址 http://www.boost.org/users/his ...
随机推荐
- webpack安装,常见问题和基本插件使用
一:webpack认识 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依赖关 ...
- BZOJ 5496: [2019省队联测]字符串问题 (后缀数组+主席树优化建图+拓扑排序)
题意 略 分析 考场上写了暴力建图40分溜了-(结果只得了30分) 然后只要优化建边就行了 首先给出的支配关系无法优化,就直接A向它支配的B连边. 考虑B向以B作为前缀的所有A连边,做一遍后缀数组,两 ...
- 【题解】[NOIP模拟题]我要的幸福-C++
题目Description我要的幸福(happiness)幸福/我要的幸福/渐渐清楚/梦想/理想/幻想/狂想/妄想/我只想坚持每一步/该走的方向/就算一路上/偶尔会沮丧/生活是自己/选择的衣裳/幸福/ ...
- sql server 的 out 和output
sql中out与output --SQLQuery Create By Faywool create proc Proc_OutPutTest--创建 @numA int,--nu ...
- 023_统计当前 Linux 系统中可以登录计算机的账户有多少个
#!/bin/bash #方法 1: grep "bash$" /etc/passwd | wc -l #方法 2: #-F END都要大写! awk -F: '/bash$/{x ...
- learning express step(十一)
learning express.Router() code: const express = require('express'); const app = express(); var route ...
- [BJOI2019]排兵布阵 DP
[BJOI2019]排兵布阵 DP 比较好想的DP,设\(dp[i][j]\)表示第\(i\)个城堡时,已派出\(j\)个士兵.决策时,贪心派出恰好严格大于某一玩家派出的数量的两倍(不然浪费).我们发 ...
- Linux监控工具介绍系列——iostat
文章转自:https://www.cnblogs.com/ghj1976/p/5691857.html Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iost ...
- JavaWeb_(Mybatis框架)动态sql_七
系列博文: JavaWeb_(Mybatis框架)JDBC操作数据库和Mybatis框架操作数据库区别_一 传送门 JavaWeb_(Mybatis框架)使用Mybatis对表进行增.删.改.查操作_ ...
- 为win10下的linux子系统终端添加powerline
一切按照上一篇完成,如果成功了,你厉害了我的哥,如果不成功,win10安装powerline字体才可以,才可以,才可以 sudo apt install build-essential cmake g ...