连接中下划线的问题,请高手指点一二。

mmtang3 2005-12-18 09:23:31
我的代码编译时使用的编译器,与一些库编译时使用的编译器版本可能不同,
连接时产生找不到符号的错误。
如:
/* mycode.c */
...
someFunc(); /* 调用库libsome.a中的函数 */

连接时会出现:_someFunc未定义的错误。

在gnu的编译器中,有没有编译选项,可以去掉前导的_。
我查过了,没有答案,
请求大家的帮助。
...全文
141 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zez 2005-12-19
  • 打赏
  • 举报
回复
1. 先确保你的方法名没有写错 !! 因为任何一个符合规范的C编译器,都会在 函数名前加 _,不加的,可能根本不是c编译器编译的,或者,不知道哪弄的不符合规范的c编译器编的
2. 用内嵌汇编方式调用这个方法...
mmtang3 2005-12-19
  • 打赏
  • 举报
回复
to qinxiaolin(绝口不提爱你) :

  我调用的函数就在我给出的库中,只是现在用的编译器版本不同。
mmtang3 2005-12-19
  • 打赏
  • 举报
回复
to jixingzhong(瞌睡虫:闭关修炼中!^_^) :

我的编译器会给符号加上下划线,但库libsome.a中(还有其他很多库)提供的符号都是不带下划线的,库不是我自己的,没源码,没法编译。

有其他什么办法吗?
microyzy 2005-12-18
  • 打赏
  • 举报
回复
dll本身导出的名字就有下划线的话,你干吗不加上?或者用数字来引用
Mr_Yang 2005-12-18
  • 打赏
  • 举报
回复
mark
csucdl 2005-12-18
  • 打赏
  • 举报
回复
libsome.a 是你自己写的吗 ?
qinxiaolin 2005-12-18
  • 打赏
  • 举报
回复
_someFunc未定义的错误。
可能是你没有包含相应的.lib文件!
将其包含进来试试看!
jixingzhong 2005-12-18
  • 打赏
  • 举报
回复
或者你把你的那个库再用别的工具编译下, 编译以后就可以正常使用了 ...
jixingzhong 2005-12-18
  • 打赏
  • 举报
回复
你的意思是说 你的编译器会给函数增加这种特殊标记符号么 ?

这样的话, 你可以在 调用中声明相同的形式就可以了 ~

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧