编译生成的库中用“extern “c””修饰的变量无法解析

cll131421 2012-07-02 12:20:09
如题。
在live555的源代码中,有如下几行代码:

extern "C" netAddressBits our_inet_addr(char const*);
extern "C" void our_srandom(int x);
extern "C" long our_random();
extern "C" u_int32_t our_random32();

编译完成后,我的其他项目调用库文件的时候,编译出以下错误:

1>libBasicUsageEnvironment.lib(BasicUsageEnvironment.obj) : error LNK2019: 无法解析的外部符号 _initializeWinsockIfNecessary,该符号在函数 "protected: __thiscall BasicUsageEnvironment::BasicUsageEnvironment(class TaskScheduler &)" (??0BasicUsageEnvironment@@IAE@AAVTaskScheduler@@@Z) 中被引用
1>libgroupsock.lib(GroupsockHelper.obj) : error LNK2019: 无法解析的外部符号 _our_srandom,该符号在函数 "unsigned int __cdecl ourIPAddress(class UsageEnvironment &)" (?ourIPAddress@@YAIAAVUsageEnvironment@@@Z) 中被引用
1>libgroupsock.lib(GroupsockHelper.obj) : error LNK2019: 无法解析的外部符号 _our_inet_addr,该符号在函数 "unsigned int __cdecl ourIPAddress(class UsageEnvironment &)" (?ourIPAddress@@YAIAAVUsageEnvironment@@@Z) 中被引用
1>libgroupsock.lib(NetAddress.obj) : error LNK2001: 无法解析的外部符号 _our_inet_addr
1>libgroupsock.lib(GroupsockHelper.obj) : error LNK2019: 无法解析的外部符号 _our_random,该符号在函数 "unsigned int __cdecl chooseRandomIPv4SSMAddress(class UsageEnvironment &)" (?chooseRandomIPv4SSMAddress@@YAIAAVUsageEnvironment@@@Z) 中被引用
1>libliveMedia.lib(RTCP.obj) : error LNK2001: 无法解析的外部符号 _our_random
1>libliveMedia.lib(RTPSink.obj) : error LNK2001: 无法解析的外部符号 _our_random
1>libliveMedia.lib(RTPSource.obj) : error LNK2019: 无法解析的外部符号 _our_random32,该符号在函数 "protected: __thiscall RTPSource::RTPSource(class UsageEnvironment &,class Groupsock *,unsigned char,unsigned int)" (??0RTPSource@@IAE@AAVUsageEnvironment@@PAVGroupsock@@EI@Z) 中被引用
1>libliveMedia.lib(RTPSink.obj) : error LNK2001: 无法解析的外部符号 _our_random32
1>F:\openRTSP\Debug\openRTSP.exe : fatal error LNK1120: 5 个无法解析的外部命令

错误的大概意思就是有无法解析的外部符号。这几个外部符号的前面都有 extern “c”修饰。
请教各位高手,这个问题如何解决。
...全文
526 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cll131421 2012-07-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
兄弟这个问题你解决了没?我的也是这样子。我的是visualstudio 2010下写的。
[/Quote]
主要原因是我include路径不对,编译的库是最新版本的,include的包含文件却是两个月前的。
liuyimingsheng 2012-07-20
  • 打赏
  • 举报
回复
兄弟这个问题你解决了没?我的也是这样子。我的是visualstudio 2010下写的。
  • 打赏
  • 举报
回复
lib库编译的方式要和项目的方式一致,都是Debug格式的么?
cll131421 2012-07-04
  • 打赏
  • 举报
回复
你说的导入是导入到项目中么?
一共生成了4个lib库,都通过
#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "libBasicUsageEnvironment.lib")
#pragma comment (lib, "libgroupsock.lib")
#pragma comment (lib, "libliveMedia.lib")
#pragma comment (lib, "libUsageEnvironment.lib")
导入了。
  • 打赏
  • 举报
回复
你完成了?
检查一下是不是全部的lib库都导入了?
cll131421 2012-07-04
  • 打赏
  • 举报
回复
没人来回答么?
只要有人来,送分了啊。。。
cll131421 2012-07-04
  • 打赏
  • 举报
回复
格式是一致的,有Debug版本的,也有Release版本的,但出现的问题是一样的。

2,275

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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