游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2943|回复: 7

请教一个关于dll变量导出的问题

[复制链接]

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2006-4-8 23:20:00 | 显示全部楼层 |阅读模式
  最近新建了一个vc工程,里面包含多个dll工程,里面的变量、函数和类都用dllexport导出。但是我在exe工程里只能link到它导出的类和函数,如果在dll工程中定义了全局变量,想要在exe工程中使用就会出现lnk2001的错误,提示该变量无法link。请问各位如何解决这个问题。
  另外,看到一些资料表示,在dll工程中应该用dllexport导出变量、函数以及类,在exe工程中应该用dllimport导入这些信息。不知道是不是对上述问题的解决方案。如何实现?

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-9 08:03:00 | 显示全部楼层

Re:请教一个关于dll变量导出的问题

用VC的向导自动生成一个Win32 DLL项目,看看它的导出变量的方式和你的有没有不一样的地方,向导生成的那个是能正常使用的

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2006-4-9 20:13:00 | 显示全部楼层

Re:请教一个关于dll变量导出的问题

我试过了,我用vc向导生成一个dll工程,其中有个选项:export symbols。勾选了这个选项后,在其他工程中就可以链接到这个dll工程中的全局变量了。在dll工程中定义了一个预处理宏APP_EXPORTS,在代码中有这样一段:
#ifdef APP_EXPORTS
#define APP_API __declspec(dllexport)
#else
#define CORE_API __declspec(dllimport)
#endif
这段代码主要是说明,在编译core这个dll工程时,由于预定义了CORE_EXPORTS宏,所以将dll中的函数、变量、类用dllexport导出。而当编译其他引用到core的工程时,由于没有预定义CORE_EXPORTS宏,所以用dllimport将core中的变量、函数、类导入。
但是奇怪的是我新建一个没有勾选export symbols的dll工程,然后设置成上面那样,也一样不能link,我仔细比较了工程设置,没有不一样的地方。
另外,我建立的dll工程中的大部分内容都可以link到。但是一个模板类不行,不知道什么缘故。

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-9 22:47:00 | 显示全部楼层

Re:请教一个关于dll变量导出的问题

VC里模板类要全放在.h文件里,不能放在.cpp文件里,也就没有导出的问题了

我不知道你使用DLL的方式是用LoadLibrary载入还是用用.h和.lib文件来链接

如果是用LoadLibrary,我觉得用模块定义文件(.def)比较方便
如果是另一种,你就把export symbols勾上吧,不然不方便

就要这样
在DLL里变量这么定义(.cpp里) _declspec(dllexport) int abc= 250;
在EXE项目里写 extern _declspec(dllimoprt) int abc;(或者写在一个.h里,在EXE项目里包含它)

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2006-4-10 10:23:00 | 显示全部楼层

Re: 请教一个关于dll变量导出的问题

我用的是隐式连接,就是用的.h.lib的那种连接方式。建立的工程的时候也是勾选了export symbols选项的。
目前其他问题都解决了,就是模板类的会link不到。的确是把模板类写在.h文件中的。可能是代码的具体某个地方有问题。我建立了一个小的测试工程测试了一下,,用上述的方法,模板类的导出应该是没有问题的。

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2006-4-10 10:45:00 | 显示全部楼层

Re:请教一个关于dll变量导出的问题

呵呵,解决了。模板类不需要用__declspec(dlexport)导出。

7

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
 楼主| 发表于 2006-4-10 10:45:00 | 显示全部楼层

Re:请教一个关于dll变量导出的问题

多谢ljmm

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-4-10 14:01:00 | 显示全部楼层

Re:请教一个关于dll变量导出的问题

不用谢,模板类只写在.h里,也就不用导出,直接用就可以
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 04:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表