如何使用g++链接C库

通常我们会用gcc编译动态链接库给用户使用,而用户则可能使用g++。这样就会有一个问题,链接的时候经常找不到函数。如何解决这个问题呢,我们先看以下为什么找不到。 大家知道,c++是支持函数重载。也就是说,相同名字的函数可以在c++中定义多次,只需要返回值或者函数参数不同即可。 我们分别用g++和gcc编译同一个文件看看其生成的二进制文件。 [crayon-69ce61cf65cba854981684/] 使用gcc编译后 [crayon-69ce61cf65cbe707956242/] 使用g++编译后 [crayon-69ce61cf65cc0455740653/] 很明显。对于同一个源文件,同一个函数,使用不同的编译器下编译出了不同的结果。gcc编译后还是ScardOpen,而g++编译后变成了_Z9SCardOpenv。而函数的实现则是完全一样的。 因为g++是支持函数名重载的。所以单靠函数名是不能区分不同的函数的,随意它在函数名字的前后都加了一些内容。这就是链接使用不同的编译器编译出来的动态链接库无法找到函数的原因。 如何解决呢。因为C++是在C之后出现的。所以C++可以通过一些选项兼容C语言。我们可以在我们提供给用户的头文件里加入extern “C” {} 解决问题 比如: [crayon-69ce61cf65cc2592983220/] g++发现有extern “C”包含的东西会以C的方式链接,而定义了__cpluspluc则表示如果使用g++编译则定义extern “C”

Ethernet Interface

MII 信号定义 名称 描述 ETHCK Transmit Clock ETX[0:3] 4-bit Transmit Data ETXEN Transmit Enable ETXER Transmit Error ECRS Carrier Sense ECOL Collision Detect ERXDV Data Valid ERXCK Receive Clock ERX[0:3]…

开发板无网络如何下载程序

使用console口下载程序,首先确保busybox编译了rx。(minicom的通过X/Y/Zmodem收发也是调用rx)。 然后直接在console运行rx filename,接着在CRT选择Transfer->Send Xmodem,等待正常传输即成。 建议busybox至少编译tar,这样传输多个文件的时候可以打包传输。

LCD液晶接口

VGA RGB接口I/O定义 信号 方向 功能 D[7:0] I/O 传感器数据 RESET O 传感器复位 ENB I/O 传感器电源使能 CLK O 传感器时钟 HSYNC I 行同步 VSYNC I 列同步 SDA I/O I2C, EEPROM 数据 SCK I…

终于看到基金的钱了

基金余额4,990.12,在途资金26,563.65,合计31553.77。29,300.00赚了2253.77,少了1448.15大洋啊 学到了不少东西。基金在下午3点前卖按照当天的净值出售,当天的净值在第二天放出。 下午3点后卖按照第二天的净值出售。惨痛的教训。。。

市值瞬间蒸发了

今天基金市值为31,678.64,我去啊。一个周末蒸发了1.5k。 蛋定蛋定。都是浮云。。。。

把定投的基金卖掉了

09年9月到10年11月。累积14个月。共投入资金29,300.00,预计收回资金33,001.92。 哇咔咔。一顿大餐。 不过手续费扣了我不少钱。真TMD的黑啊。雁过拔毛。

第一次痛恨整天P2P的人

中国网络国情。没办法啊。真TMD的慢啊。 我不排斥用P2P下东西。但是要有道德啊。大家都在用网的时候你搞这一下子啥都干不了了。 看视频就不要搞什么加速器什么的啦。本来速度就1M,在加速也到不了2M。 并且现在中国大部分软件商都非常2B加上用户也那么2B。后台偷偷上传搞不少小动作。 有需要下的等晚上大家都睡了下嘛。白天关掉并杀掉后台进程多好。 唉~~~~~