Windows&C:extern&__declspec(dllimport)

前端之家收集整理的这篇文章主要介绍了Windows&C:extern&__declspec(dllimport)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
“extern”和“__declspec(dllimport”)之间的区别/关系是什么?我发现有时候有必要使用它们,有时候就足够了。

我是对的:

>“extern”是静态链接库,
>“__declspec(dllimport)”是为DLL(动态链接库),
>对于各自的链接类型,实际上都是相同的工作,
>当您使用导入库(帮助链接到dll的小型.lib文件)时,您需要同时使用?

extern表示实体具有外部链接,即在其翻译单元(C或CPP文件)之外可见。这意味着相应的符号将被放置在目标文件中,如果这个对象文件是静态库的一部分,它也将被看见。但是,extern本身并不意味着一旦对象文件成为DLL的一部分,该符号也将可见。

__declspec(dllexport)表示符号应该从DLL导出(如果它确实是DLL的一部分)。它在编译进入DLL的代码时使用。

__declspec(dllimport)表示符号将从DLL导入。它在编译使用该DLL的代码时使用。

因为在编译DLL本身以及将使用DLL的客户端代码时通常使用相同的头文件,所以习惯于在编译DLL和_​​_declspec(dllimport)时定义解析为__declspec(dllexport)的宏编译客户端,如下所示:

#if COMPILING_THE_DLL
    #define DLLEXTERN __declspec(dllexport)
#else
    #define DLLEXTERN __declspec(dllimport)
#endif

回答你的具体问题:

>是的,外部环境对静态库是足够的。
>是的 – 声明也需要一个extern(see explanation here)。>不完全 – 见上面。>你不需要使用__declspec(dllimport)的外部程序(见上面链接的解释),但是由于你通常使用相同的头文件,所以在编译时需要extern该DLL。

原文链接:https://www.f2er.com/windows/372464.html

猜你在找的Windows相关文章