【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生成的链接库文件吗?的更多相关文章

  1. 【Linux开发】【DSP开发】利用CCS6.1生成out文件的同时生成bin文件

    [Linux开发][DSP开发]利用CCS6.1生成out文件的同时生成bin文件 标签:[DSP开发] [Linux开发] 尝试在windows上安装的CCS6.1开发AM4378-Linux下的应 ...

  2. 基于FPGA视频时序生成中的库文件

    上一篇分享了一个视频时序生成代码,下面我根据之前项目中用到的时序,对各个参数做了库文件,方便调用. -- -- Package File Template -- -- Purpose: This pa ...

  3. IOS开发:使用lipo合并armv7,i386,armv7s库文件

    假设多个版本的lib分别是 libxxx.armv7.a , libxxx.armv7s.a, libxxx.i386.a我们的目标是 把他们合并成超级通用版的libxxx.a  打开命令行 Term ...

  4. g++ 生成C++ .so库文件,并调用示例

    Tags: g++ C++ so library   在Linux系统下用g++命令编译C++程序.也可以生成so,a链接库   示例一 编译时链接so库 Test.h 文件内容   Main.cpp ...

  5. VS2008 生成静态链接库并使用

    1.启动VS2008创建一个Win32控制台程序 2.选择静态库 3.创建两个文件lib.h和lib.cpp //lib.h #ifndef LIB_H #define LIB_H int add(i ...

  6. Cocos2d-x 开发 v3.2 建立新项目并添加库文件

    一.添加其它类库     3.0以上的设计耦合性强,项目中模块常以库的形式存在,需常添加链接库.在3.0中经常用到CocoStudio 编辑器的资源数据,所以需要添加CocoStudio 库. 1.1 ...

  7. Makefile 自动搜索 c 和 cpp 文件, 并生成 .a 静态库文件

    最近 又弄linux 下的 .a 静态库编译, 于是想 做个 一劳永逸的Makefile, 经过一番折腾, 最后成功了 只需要 改两个 参数 就可以执行了(MYLIB 和 VPATH), 代码 如下: ...

  8. 【DSP开发】利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程

    [DSP开发]利用CCS5.4开发基于DSP6455的JPEG2000图像解压缩过程 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:前端是时间基于VS ...

  9. VS2010编译Boost 1.57 静态链接库

    http://www.cnblogs.com/cuish/p/4175491.html 0.前提 Boost库版本 1.57.0 下载地址 http://www.boost.org/users/his ...

随机推荐

  1. SVN(subversion )服务端和客户端的下载安装使用

    SVN(subversion)官方网站: http://subversion.apache.org/packages.html 一.服务端下载 1.百度搜关键字:subversion  进入subve ...

  2. redis在linux服务器部署

    0)参考资料 http://www.cnblogs.com/liuling/p/2014-4-19-02.html 1)下载安装包地址 http://download.redis.io/release ...

  3. java 正则《转载》

    Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 正则表达式实例 一个字符串其实就是一个简 ...

  4. git commit 详解

    git commit 命令用来将本地暂存的修改提交到版本库. git commit -m '提交信息'. 我们用的比较多的应该就是-m 参数.添加提交信息. 经常手抖的同学可能会知道,git comm ...

  5. Python 15__屏幕抓取

  6. 智能指针share_ptr记录

    shared_ptr 是一个共享所有权的智能指针,允许多个指针指向同一个对象.shared_ptr 对象除了包括一个对象的指针,还包括一个引用计数器.当每给对象分配一个share_ptr的时候,引用计 ...

  7. UDP c/s 模型

    server.c /* udp server.c */ #include <string.h> #include <netinet/in.h> #include <std ...

  8. 数据库学习之三--Select查询及运算符

    一.SELECT语句:用于从表中选取数据:语法如下: 1. 列查询: SELECT 列名称1,  列名称2 FROM 表名称: 2. 查询所有数据: SELECT * FROM 表名称: 3. 使用A ...

  9. DP(第二版)

    第一版请见:直通 话不多说,直接上题 1.P1040 加分二叉树 直通 思路: 已知中序遍历,相当于一段区间了,所以我们枚举一个k,如果以k为根节点,能够将分数更新,那么这段区间的根节点就置为k,最后 ...

  10. ZROI NOI2019集训汇总

    Day1 T1:已改但咕了(下午就补,没力气写了...) T2:未改 T3:未改 Day2 T1:在这里 T2:未改 T3:在这里 Day3 T1:在这里 T2:博客写在了本地,结果被数据清空了... ...