新建的DLL,静态加载,接口和格式都是对的,为何还LNK2001?

flamkuavos 2012-01-07 05:13:19
1、我用VC6.0新建了“一个可以到处某些符号的DLL工程”,名为regex,然后手工添加了regex.def文件(通常的写法,省略),并手工添加了regexLib.h(通常的写法,省略)头文件以用于其他程序借助lib来静态加载此DLL时用。
2、然后在DLL的regex.cpp(主文件)中新建一个测试函数regex_test,写法和工程中的示例函数一致,并且加入.def和regexLib.h声明
3、我在demo中调用regex_test,却总是提示error LNK2001: unresolved external symbol _regex_test@0
我确定函数写法是对的, extern "c"也写了,函数体也有,形参也没有错
只有我在regex.cpp(DLL的主程序)头部加上#include "../lib/regexLib.h"时,调用就OK了!

请问,这是为什么?
...全文
57 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flamkuavos 2012-01-07
  • 打赏
  • 举报
回复
u r so nice
原来包含那个头文件的作用就是补足了cpp中接口的extern "C"声明,谢谢!
Lactoferrin 2012-01-07
  • 打赏
  • 举报
回复
你的cpp里面没有extern"C"
flamkuavos 2012-01-07
  • 打赏
  • 举报
回复
我把dll工程上传了,只有4K,注意regex.cpp头部的#include "regexLib.h",没有它也能编译通过,但就是调用接口会LNK2001

http://www.rayfile.com/files/98d5df91-3912-11e1-8eb2-0015c55db73d/
flamkuavos 2012-01-07
  • 打赏
  • 举报
回复
regexLib.h内容如下,很正常的写法啊~~~

#ifndef __REGEX_H__
#define __REGEX_H__

#define REGEX_APIIMPORT extern "C"__declspec(dllexport)

REGEX_APIIMPORT int __stdcall regex_test();

#endif//__REGEX_H__
Lactoferrin 2012-01-07
  • 打赏
  • 举报
回复
regexLib.h内容是什么

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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