问题标签 [declspec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
11340 浏览

c++ - 为什么/何时不需要 __declspec( dllimport )?

在使用 server.dll 和 client.exe 的项目中,我dllexport从服务器 dll 中编辑了一个服务器符号,而不是 dllimport将其编辑到客户端 exe 中。

仍然,应用程序链接并启动,没有任何问题。dllimport不需要的话???

细节:

我有这个“服务器”dll:

和这个客户端可执行文件:

服务器命令行:

客户端命令行:

0 投票
2 回答
2153 浏览

c - C - __declspec(thread) 变量性能

我正在研究一个库的多线程实现。在这个库的一个模块中,有一些全局变量(在程序执行中经常使用)。为了使对这些变量的访问更加安全,我使用 Thread-local storage (TLS) 关键字声明了它们__declspec(thread)

这是对库外部函数的调用。此函数使用具有全局变量的模块:

通过这种方式,我猜库中使用的所有变量都将为每个线程复制。

当我在 x8 核处理器上运行程序时,完成操作所需的时间不会超过单进程实现所需时间的 1/3。

我知道不可能达到 1/8 的时间,但我认为至少 1/6 是可以达到的。

问题是:这些__declspec(thread)变量是造成如此糟糕表现的原因吗?

0 投票
2 回答
1405 浏览

c++ - 如果在 DLL 项目中使用类中的重载运算符,是否需要 __declspec(dllexport)?

使用时__declspec(dllexport),重载运算符是否也应分配此导出标志?例如,假设您有类似的东西:

__declspec(dllexport)为了==在您的班级类型上使用是必要的吗?还是不应该导出它,因为它特定于该类和任何继承的类?

0 投票
2 回答
4744 浏览

c++ - __declspec(uuid(" ComObjectGUID ")) 扩展到什么?

我有一段代码使用Microsoft 特定的 C++ 扩展:

这句话扩展成什么?如何用 ANSI C++ 重写它?

0 投票
1 回答
759 浏览

visual-c++ - MSVC:__declspec(dllexport) 没有符号

在 MSVC(特别是 2010 版本)中编写 DLL 时,我遇到了一个小问题。我的程序由主要部分和一个 DLL 组成。DLL 包含一个函数

该文件是使用 DLL 项目编译的(不使用预编译的头文件,我选择了一个空的 DLL 项目)。现在,当我想使用该dumpbin工具列出导出的符号时,导出test_function下没有列出。是否有强制__declspec(dllexport)实际导出符号的特定设置?

欢迎任何帮助。谢谢!

0 投票
2 回答
1090 浏览

visual-c++ - 从 MFC DLL 导入函数时 LNK2001 无法解析外部

我创建了一个 MFC DLL 并导出了函数,例如在文件 SerialPort.h 中:

在我的 MFC 应用程序中,我想调用 SerialInterface.h 中的函数,我从 DLL 中包含了“SerialPort.h”并调用:

例如。

我已将 SerialPort.lib 文件添加到我的链接器包含中,但是当我尝试编译时,我得到了

我被困在这个原因上,我已经尝试重建一切,但似乎没有任何帮助?

感谢您的任何帮助!

0 投票
3 回答
1604 浏览

c++ - 将 C 头文件中的 __declspec 转换为 Delphi

我在将类从 C 头文件转换为在 Delphi 中使用时遇到问题。

C 头文件中的声明片段如下所示:

我正在编写一个 DLL,它导出一个接受 ISomeInterface 参数的方法,例如

我在 Delphi 中声明了 ISomeInterface,如下所示:

调用 pSomeInterface.SomeBoolMethod 会导致访问冲突。

我在做一些根本错误的事情吗?

实际的 C 标头是 httpserv.h,我正在尝试在 Delphi 中实现 IIS7 本机模块。

一些有效的 c++ 代码如下所示:

调试时,我看到 pModuleInfo 参数包含一个 __vfptr 成员,该成员下有 6 个成员(命名为 [0] 到 [5] 并具有地址作为值),我推断它是 IHttpModuleRegistrationInfo 类中的虚拟方法的指针。

Delphi RegisterModule 导出现在看起来像这样:

pModuleInfo 包含与 cpp 示例中的 __vfptr 成员等效的地址,假设 __vfptr 中的顺序与头文件中的类声明相同,我提取方法地址:

我现在有了要调用的方法地址,所以现在我只需要以某种方式调用它。不过,我可能会走错路!

0 投票
4 回答
62446 浏览

c++ - __declspec(dllimport) 的真正含义是什么?

我看到了这样的Qt源代码:

哪个Q_CORE_EXPORT宏定义如下:

那么__declspec(dllimport)真正的意思是什么?

0 投票
1 回答
596 浏览

visual-c++ - VC++ 2008/2010:throw() 或 __declspec(nothrow) 是更好的选择吗?

使用 VC++ 2008 和 2010 时,最好使用哪个标记来指示函数不会引发异常:

  • throw()(C++ 标准)
  • __declspec(nothrow)(MS 扩展)

我阅读了一些较早的论坛讨论,其中人们说使用throw()实际上可能会强制编译器生成额外的代码来捕获异常,以防函数抛出(针对标记)。他们的建议不是使用throw()而是使用__declspec(nothrow),因为编译器实际上可以使用它进行优化。

我进行了一些搜索,但找不到真正有用的结果。据我了解,Boost 库建议不要在此处使用它们。__declspec(nothrow)是非标准 C++,所以如果 MS 实现异常规范,它会继续以相同的方式工作,而throw()行为可能会改变。

0 投票
1 回答
1047 浏览

c++ - 在返回引用的函数上使用 __declspec(nothrow)

我想申请__declspec(nothrow)一些返回对象引用的成员函数。例如,我想将它添加到这个函数中(在 MyClass.h 中):

VC++ 文档说我需要在函数的返回类型之后添加它,如下所示:

return-type __declspec(nothrow) [call-convention] function-name ([argument-list])

如果我遵循这一点,我的大部分功能都可以正常使用__declspec(nothrow). 但是,当我为上述成员函数(或任何其他返回 a 的函数CMyClass&)执行此操作时,会出现编译错误:

error C2059: syntax error : '__declspec(nothrow)'

我可以把它放在返回类型的前面,然后编译,但文档还说,如果 __declspec() 放置在错误的位置,编译器可能会忽略它而不会发出警告或错误。

正确的使用方法是__declspec(nothrow)什么?