几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   vc编程 (http://www.dimcax.com/hust/forumdisplay.php?f=76)
-   -   【转帖】请各路高手说说__declspec(dllimport)是用在什么地方的? (http://www.dimcax.com/hust/showthread.php?t=1019)

yogy 2007-07-11 02:23 PM

【转帖】请各路高手说说__declspec(dllimport)是用在什么地方的?
 
编DLL的时候偶只用过__declspec(dllexport),只是一直想知道__declspec(dllimport)是干什么用的,怎么用?

yogy 2007-07-11 02:24 PM

回复: 【转帖】请各路高手说说__declspec(dllimport)是用在什么地方的?
 
从书上看到的:
使编译器延迟建立vtable,直到一个真正的实例被创建起来的时候,才建立vtable!为了压缩最后生成的代码长度!

yogy 2007-07-11 02:24 PM

回复: 【转帖】请各路高手说说__declspec(dllimport)是用在什么地方的?
 
__declspec( dllexport )是告诉编译器这个函数(或变量)是dll的导出函数。
而__declspec(dllimport)就是告诉编译器这个函数(或变量)是某个dll里的导出函数,连接时进行查找lib文件。
一般动态连接库头文件写法就是
#ifdef _DLL
#define FUNC_DLL __declspec( dllexport )
#else
#define FUNC_DLL __declspec( dllimport)
#endif

yogy 2007-07-11 02:25 PM

回复: 【转帖】请各路高手说说__declspec(dllimport)是用在什么地方的?
 
导出函式__declspec(dllexport)在dll中用
导入函式__declspec(dllimport)在要调用dll的程序中用

用__thread或__declspec(thread)声明线程局部变量。

yogy 2007-07-11 02:29 PM

回复: 【转帖】请各路高手说说__declspec(dllimport)是用在什么地方的?
 
我现在要编一个DLL供PB调用,有两个函数同名,只是参数稍有不同,请问怎么定义def文件?

例如:
long ABC(int intFlag,char* aaa)
long ABC(int intFlag,long* bbb)

应该怎么去编这样的dll ?
>
解决了!谢谢上面的各位!

1、在dll中合并为一个函数:
extern "C" long __stdcall ABC(int intFlag,void* aaa)
然后在函数内部,根据情况对aaa进行 (char*) 和 (long*),分别进行处理。
这样def文件中只有一个函数名ABC,就没有问题了。

2、在PB中声明如下:
Function long ABC(long intFlag,ref string aaa) Library 'my.dll' alias for "ABC"
Function long ABC(long intFlag,ref long bbb) Library 'my.dll' alias for "ABC"

yogy 2007-07-11 02:29 PM

回复: 【转帖】请各路高手说说__declspec(dllimport)是用在什么地方的?
 
14 楼wshcdr(dd)回复于 2005-04-01 22:38:18 得分 0

DLL导出有两种方法
1.DEF文件描述
2._declspec(dllexport)

还有一个HACK的办法,用指针实现的Top

15 楼jronald(深白色)回复于 2005-04-01 23:32:35 得分 0

找到答案了
用_declspec(dllimport)是为了让编译器生成效率更高的代码,不用也不会出错


所有的时间均为北京时间。 现在的时间是 12:37 PM.