| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1345 人关注过本帖
标题:再议__declspec(dllimport)
取消只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
结帖率:98.26%
收藏
已结贴  问题点数:100 回复次数:3 
再议__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
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
回复 2楼 wujieru
如果能够解答的给解答一下,不能够解答请你出去!

愿用余生致力编程
2010-11-11 16:52
我菜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
快速回复:再议__declspec(dllimport)
数据加载中...
 
   



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

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