问题标签 [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 投票
1 回答
240 浏览

c++ - 有没有办法使用 __declspec(align) 来声明具有不同类型的对象

有没有办法使用 __declspec(align) 在 Visual Studio 中声明大量对象?某事喜欢:

我的问题类似于__declspec(align) for multiple declarations。但是这个问题是针对具有相同类型的对象的。

0 投票
2 回答
2839 浏览

c - 尝试使用 gcc 编译用 C 编写的简单 dll 失败

尝试使用 gcc 编译一个用 C 编写的简单 DLL。

尝试了许多教程,但即使我将文件剥离到最基本的内容,也无法编译它。

test_dll.c

尝试使用命令编译它

失败,得到这个输出

gcc 版本

0 投票
1 回答
37 浏览

c++11 - 模板由 lambda 函数的返回值定义

让它成为一个需要这种行为的模板:

这显然是不可能的,因为它为 lambda 编写的返回类型为 void,因为 if() 的两个分支都应该是合法的。除了将 declspec 作为模板参数的默认值并专门化两个模板之外,是否有更简单的方法来解决此问题?

0 投票
0 回答
404 浏览

windows - 如何使用 CMake 在 windows .dll 库中导出“类静态成员变量”

我正在为基于 CMake 的 Windows、Linux/Unix 构建一个 C++ 库。我在 Windows 上创建了一个共享库(.dll),我想在 Linux / Unix 上使用一个静态库(.a)。

在 Windows 上,我知道如何处理__declspec(dllexport/dllimport)我想要导出的每个函数和类。然后我最近看到了这些文章。(https://blog.kitware.com/create-dlls-on-windows-without-declspec-using-new-cmake-export-all-feature/)我尝试在没有__declspec()库函数的情况下构建 CMakeLists.txt在文章中。

根据文章,为了导出类中的静态成员变量,需要根据现有方法创建导出头,并声明变量如下。

该库已成功编译,但尝试GlobalCount在下游项目中引用此变量会导致 LINK 错误。

你对这个问题有想法吗?

0 投票
0 回答
322 浏览

c++ - __declspec(dllimport) 未按预期运行

我在这里使用此代码:

现在,根据: https ://msdn.microsoft.com/en-us/library/aa271769(v=vs.60).aspx :

__declspec(dllimport) 提示编译器后端调用的函数驻留在外部 DLL 中,因此不应生成间接调用(FF 15 ...),这意味着不会间接调用蹦床...

在查看反汇编时,Function()、Add() 和 GetCurrentProcess() 会导致间接远调用,这是不应该发生的,因为我明确地给编译器提示不要发出“FF15”但插入“E8” .

显然我错过了某事。这里...有什么提示吗?(项目设置为 VS 2015,发布版本,无增量链接,大小超过速度,针对大小进行优化)

0 投票
0 回答
153 浏览

c++ - 无法使用 declspec 编译 extern C

你好我不知道为什么我不能编译这段代码?

我收到此错误:

C:\Users\Axel\Desktop\TestPerso\main.cpp|9|错误:预期的不合格 ID >before string constant|

我正在使用 Intel Hd 芯片组和 Nvidia 图形卡 920M 的 PC 上运行 Windows 10 ont。

0 投票
2 回答
614 浏览

c++ - 使用 .def 文件的优缺点

我不明白这一段:

在 .def 文件中导出函数使您可以控制导出序数。将导出函数添加到 DLL 时,可以为其分配比任何其他导出函数更高的序数值。执行此操作时,使用隐式链接的应用程序不必重新链接到包含新函数的导入库。如果您正在设计一个供许多应用程序使用的 DLL,这将非常方便,因为您可以添加新功能并确保它继续与已经依赖它的应用程序一起正常工作。例如,MFC DLL 是使用 .def 文件生成的。

在将函数添加到 dll 的情况下,为什么在使用 .def 文件而不是 __declspec(dllexport) 的情况下,应用程序不必重新链接导入库?

cf https://docs.microsoft.com/en-us/cpp/build/determining-which-exporting-method-to-use

0 投票
2 回答
484 浏览

c++ - 模板类中的 lambda 函数上的 __declspec(noinline) 在 VS2017 中引发语法错误

在尝试使用断言宏调试问题时,我遇到了这个问题。在模板类中的 lambda 函数上使用 __declspec(noinline) 会在 Visual Studio 2017 中生成语法警告:

错误 C2760:语法错误:意外标记“__declspec”,应为“{”

这是失败的代码:

如果我转到我的项目设置并在项目属性对话框的常规部分将我的平台工具集从 v141 (vs2017) 切换到 v140 (vs2015),错误就会消失。

如果我将类更改为不是模板类,它也会正确编译:

我很好奇为什么使用 v141 平台工具集不会成功。是否有其他项目设置可能会影响这一点?

0 投票
0 回答
118 浏览

c++ - 除非我添加 __declspec(dllimport) 否则链接错误

我正在尝试为我继承的 Visual Studio 解决方案中的项目配置调试配置。该解决方案在 Release 中编译得很好。在调试中,我得到了一堆LNK2019 unresolved external symbol "__declspec(dllimport) ... 要编译成链接到其他项目的 DLL 的不同项目。

我有理由相信这不是我的“附加库目录”或“附加依赖项”的问题,因为我已经检查了这个并且发布和调试匹配......

我还注意到,如果我添加__declspec(dllimport)到(某些)无法链接的功能,相应的错误就会消失。

所以我的问题是:我的调试配置中的哪个选项可能会导致链接错误,只有在我不放入__declspec(dllimport)被链接的例程时才会发生链接错误?

0 投票
1 回答
135 浏览

c++ - 使用 dllimport 代替 dllexport

在 Visual Studio 2015 中构建我的 dll 时,我似乎可以使用__declspec(dllexport)__declspec(dllimport)互换。在制作 DLL 时,我会认为该dllexport命令是必需的,但它似乎要么dllexportdllimport足够了。我有以下头文件声明一个简单的添加()函数:

添加.h

在 cpp 文件中具有以下定义:

添加.cpp

我似乎能够使用构建的 DLL,无论是否ADDDLL_EXPORTS在配置属性 > 预处理器 > 预处理器定义中定义。例如,在一个包含 .lib 文件作为附加依赖项(配置属性>链接器>输入>附加依赖项)的单独项目中,我有以下代码运行

主文件

任何见解表示赞赏。如果需要更多信息,请告诉我。提前致谢!