vc 调用C写的lib

xudeshi2005 2010-06-26 11:10:42
用C写的一个函数, a.c

#include <stdio.h>

void test()
{
printf("test lib");
}


在vc工程中怎样调用该lib库,,
我在link里设置了,但是调用的是时候老提示 找不到函数,,
请给位赐教。。。



...全文
284 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yanger_xy 2010-06-27
  • 打赏
  • 举报
回复
写个def文件
cattycat 2010-06-27
  • 打赏
  • 举报
回复
另外还是要加上#pragma comment(lib,"test01.lib")
xudeshi2005 2010-06-27
  • 打赏
  • 举报
回复
vc6.0 写的程序,
#include <stdio.h>

extern void test()
{
printf("xudeshi");
}
编译成lib库,,为 test01.lib


用vc创建一个控制台程序,调用 该库

extern "C" void test();
int main(int argc, char* argv[])
{
printf("Hello World!\n");
test();
return 0;
}

总是报错,,
test02.obj : error LNK2001: unresolved external symbol _test
Debug/test02.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

不知道怎么解决?

我 把test01.lib 库文件拷贝到了,调式工程的目录和debug目录下了,,还是不好使,,,
??
怎么办?


xudeshi2005 2010-06-26
  • 打赏
  • 举报
回复
我放到了 源文件或者程序的目录下了,就是不好用,,,
jbz001 2010-06-26
  • 打赏
  • 举报
回复
你把那个链接库放到源文件或者程序的目录下
小小攻城师 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fox000002 的回复:]
C/C++ code
extern "C" void test();

int main()
{
test();

return 0;
}
[/Quote]
就是这样的。因为在c++编译器使用的函数名称修饰符方式比较复杂,简单就是跟c的不同。所以c编译的库文件是不能直接在里面使用的,加修饰符extern "C" 之后变为标准的c名称修饰符。这样就可以调用了。
建议Google之c++名字修饰符
pengzhixi 2010-06-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fox000002 的回复:]
C/C++ code
extern "C" void test();

int main()
{
test();

return 0;
}
[/Quote]

可以结贴了。
上善若水邻 2010-06-26
  • 打赏
  • 举报
回复
记错了 不用extern的 不过你要连同头文件和lib都要放在该目录下
用的时候要用

#pragma comment(lib,"a.lib");
fox000002 2010-06-26
  • 打赏
  • 举报
回复
extern "C" void test();

int main()
{
test();

return 0;
}
fox000002 2010-06-26
  • 打赏
  • 举报
回复
extern "C" void test()

int main()
{
test();

return 0;
}
fox000002 2010-06-26
  • 打赏
  • 举报
回复
(1) 使用前声明原型

(2) 用 extern "C" 修饰保证函数名称一致

上善若水邻 2010-06-26
  • 打赏
  • 举报
回复

#include <stdio.h>

extern void test()
{
printf("test lib");
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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