| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1345 人关注过本帖
标题:再议__declspec(dllimport)
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏
已结贴  问题点数:100 回复次数:10 
再议__declspec(dllimport)
下午写了个程序,想验证一下__declspec(dllimport)的作用!可是遇到了一个问题!
在我编写的这个程序中我并没有声明导入函数:__declspec(dllimport),可是为什么程序还是能够运行呢??
程序代码:
# include <stdio.h>
#pragma comment(lib , "Dll.lib")

int main()
{
    printf("%d\n" , add(1 , 3)) ;
    return 0 ;
}

难道在Dll.lib这个引入库中包含导出列表吗??

[ 本帖最后由 我菜119 于 2010-11-11 16:45 编辑 ]
搜索更多相关主题的帖子: 声明 comment 
2010-11-11 16:43
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
那我再来 要不要你要在骂人
2010-11-11 16:50
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 2楼 wujieru
如果能够解答的给解答一下,不能够解答请你出去!

愿用余生致力编程
2010-11-11 16:52
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:80 
如果是普通的函数,那么对这要求并不严格,普通函数的话,你可以只使用__declspec(dllexport)声明
另,最好请提供一下你的dll测试代码是怎么写的

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-11-11 17:05
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
你有什么权利让别人出去?
2010-11-11 17:06
hf_gorden
Rank: 2
等 级:论坛游民
帖 子:33
专家分:45
注 册:2010-10-18
收藏
得分:20 
2楼人至贱则无敌
2010-11-11 17:23
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
你偷偷发信息骂人就不贱???
2010-11-11 17:27
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 4楼 御坂美琴
如果我在我的动态库中定义了一个全局变量,发现在我的应用程序中如果不加这个__declspec(dllimport)的话链接会出错!然后我在网上找到了关于__declspec(dllimport)的说明:
不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。编译器之所以能够生成更好的代码,是因为它可以确定函数是否存在于 DLL 中,这使得编译器可以生成跳过间接寻址级别的代码,而这些代码通常会出现在跨 DLL 边界的函数调用中。但是,必须使用 __declspec(dllimport) 才能导入 DLL 中使用的变量。  


愿用余生致力编程
2010-11-11 17:35
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
我使用dumpbin工具查看了一下生成的exe文件,发现里面存在我要引入的变量与函数!即使在引入函数的时候不使用__declspec(dllimport)也能够编译通过,但还是应该使用这个关键字,就好象在c语言中不使用extern声明也能够编译通过一样!!

愿用余生致力编程
2010-11-11 17:40
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
其实我早就知道了
2010-11-11 17:43
快速回复:再议__declspec(dllimport)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046758 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved