动态库里面的函数没有声明为declspec(dllexport),为什么也能用?

ybxuwei 2013-03-19 04:42:44
动态库里面的函数没有声明为declspec(dllexport),为什么也能用?
...全文
573 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 9 楼 ybxuwei 的回复:
引用 8 楼 Red_angelX 的回复:楼主的开发环境是? visual studio 2008,不声明为_declspec(dllexport),只是用dumpbin查看不到导出函数
那你单步运行,看看调用的函数是不是在dll中。
一个傻冒 2013-03-20
  • 打赏
  • 举报
回复
DLL链接库里的函数也可以不导出。 所以楼主的问题应该不是问题吧。
ybxuwei 2013-03-20
  • 打赏
  • 举报
回复
引用 8 楼 Red_angelX 的回复:
楼主的开发环境是?
visual studio 2008,不声明为_declspec(dllexport),只是用dumpbin查看不到导出函数
Red_angelX 2013-03-20
  • 打赏
  • 举报
回复
楼主的开发环境是?
  • 打赏
  • 举报
回复
引用 6 楼 Red_angelX 的回复:
在c/c++中 没加static的都是存在于全局空间的 linux下还没有_declspec(dllexport)这玩意呢
win下没导出就是不能用 linux下是全导出的。
Red_angelX 2013-03-20
  • 打赏
  • 举报
回复
在c/c++中 没加static的都是存在于全局空间的 linux下还没有_declspec(dllexport)这玩意呢
一个傻冒 2013-03-20
  • 打赏
  • 举报
回复
编译可以。但你用Depends看过,导出函数了吗?
ybxuwei 2013-03-20
  • 打赏
  • 举报
回复
引用 3 楼 lostying 的回复:
声明和定义的地方都没有?
有啊。 testlib.h void fun(); testlib.cpp #include <iostream> using namespace std; void fun()//此处没有加_declspec(dllexport) { cout << "OK" << endl; } 在编译选项里面选择动态库,然后生成。
ybxuwei 2013-03-20
  • 打赏
  • 举报
回复
我又重新建立工程试验了一下,没有_declspec(dllexport)是不行的,就只会生成dll文件而不能生成lib文件。之前实验成功是因为我先生成了一下静态库,我以为生成动态库时会把lib文件覆盖掉,其实没有,导致我在另一个程序里面候一直调用的是静态库。
无言猪 2013-03-19
  • 打赏
  • 举报
回复
声明和定义的地方都没有?
ybxuwei 2013-03-19
  • 打赏
  • 举报
回复
引用 1 楼 Dobzhansky 的回复:
可能使用的 def 文件定义的导出符号吧
没有def文件
Dobzhansky 2013-03-19
  • 打赏
  • 举报
回复
可能使用的 def 文件定义的导出符号吧

15,471

社区成员

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

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