问题标签 [dllexport]

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 投票
3 回答
811 浏览

c++ - 为什么我们需要在 C++ 中导出一个类?

我是一个初学者,所以,如果这听起来太琐碎,请多多包涵。当我在网上搜索这个时,我得到了显示如何做的结果。我的问题是为什么我们首先要这样做?

0 投票
2 回答
6697 浏览

c++ - 如何在 stl 模板中使用导出的类 (__declspec(dllexport))?

我正在使用导出的类

当我这样做时,我收到一条警告 C4251,说 m_map:class 'std::map<_Kty,_Ty>' 需要有 dll 接口供 myclass 类的客户端使用。
关于我如何解决这个问题的任何想法?
阿图尔

0 投票
2 回答
227 浏览

c++ - 这种在 DLL 中初始化数组的设计有什么问题吗?

假设我们有一个 DLL,并且应该有一个全局存储在其中的数组将被导出,问题是我们想通过从文件中读取一些内容来初始化它,所以我个人发现自己没有别的办法,只能放它在一个结构中能够使用构造函数进行初始化:

现在要在哪里使用它,程序员可以初始化对它的引用,然后使用如下引用:

现在你会认为我在任何情况下都错了吗?

0 投票
1 回答
546 浏览

visual-c++ - 情况下的 vc++ 问题导出/导入 dll 中的全局变量

前提

环境:VC2005

在我的项目中发现循环依赖时遇到了这个问题(两个dll相互引用),因此将一个dll中的一个划分为两个dll。

举例说明:

前 :

我的头文件.h

后:

我的Common.h

我的全球.c

MySpecific.c

更改后代码失败:(此代码在特定 dll 中运行)

我确认 globalStruct.myFileName 值是相同的(至少是真实的话)。

更改后我无法直接使用调试器访问该值。所以,为了在调试器中查看值,我复制到临时本地 char[] 变量。然后,我发现拖尾虚拟字符的前值和后值是不同的。

之前:
d:[my path] '0'(char end null) '0' '0' ... 之后:
d:[my path] '0'(char end null) '-3' '-3' ' -3' ...

谢谢你的阅读。

0 投票
2 回答
1799 浏览

c++ - 将 unicode 字符串从 VB.net 传递到 C++ dll

我已经尝试了很多东西,但我无法让它发挥作用。我可以将普通字符串 (char*) 传递和接收到 C++,但我无法w_char_t *在 C++ 中接收 Unicode 字符串 ()。

这是c++上的一些代码

在 VB.net 上

当我更改为时w_char_tchar我收到了正确的字符串。

我在 VB6 上找到了很多资料,但不是 VB.net

非常感谢任何帮助。

莱昂

0 投票
6 回答
2084 浏览

winapi - 从 DLL 导出的 WinMain

我试图将 WinMain 函数隐藏在 DLL 中,以避免一遍又一遍地再次键入大部分代码。

我从 DLL 中导出 wWinMain,将其声明为

extern "C" int WINAPI wWinMain( ... ) { // repetitive code here }

并使用了链接器选项/EXPORT:wWinMain,但是当我尝试在另一个项目中使用导入库时出现错误

LIBCMTD.lib(wincrt0.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function __tmainCRTStartup

备注我确实想使用 GUI 界面,我知道这是定义 main 而不是 WinMain 函数时的常见错误。此外,我在两个项目中都启用了 UNICODE 支持。我应该怎么办?

0 投票
1 回答
4599 浏览

dll - 从 dll 导出带有 clr 参数的函数?

我有一个旧的托管 c++ dll,我需要调用一些返回托管类型的函数。

对于没有托管类型的 dllexport,这很容易,我只需在如下标头中定义我的静态 c(++) 函数:

但是现在静态 c(++) 函数应该返回一个托管类型,这里我遇到了一个问题。如果我尝试(例如):

我收到编译器错误(函数定义需要 __clrcall 签名)。

由于 DLL 不是程序集(我认为),我有点茫然如何使用 .net/clr 参数导出简单的函数调用。这可能很简单,我只是在寻找错误的方向?

0 投票
2 回答
13061 浏览

c++ - 使用 extern c 和 dllexport 与模块定义 (msvc++) 进行标准调用名称修改

我试图为 dll 导出一个简单的测试函数,以便与将调用约定指定为的应用程序(仅供参考:mIRC)一起使用:

现在,要从应用程序中调用它,我将使用test_func但我注意到由于名称修饰它并不像我想象的那么简单。

通过此处的类似主题,我了解到将extern "C"__declspec(dllexport)结合使用是一种等效的(在某种程度上)消除对模块定义 (.def) 的修改的方法。但是,当使用 extern/dllexport 方法时,我的函数(例如)始终是_test_func@numbers而 .def 删除了所有需要与我需要导出到的应用程序一起使用的修改。

有人可以解释这是为什么吗?我只是对这两种方法感到好奇。谢谢!

0 投票
4 回答
30766 浏览

c++ - 如何在 DLL 中使用类?

我可以在 DLL 中放置一个类吗?我写的课是这样的:

我知道如何加载 DLL 并在 DLL 中使用函数,但是如何将类放入 DLL 中?非常感谢你。

0 投票
2 回答
1536 浏览

visual-c++ - dll 导出一个不完整的类

[编辑:进一步挖掘揭示了一个不同的根本问题。我正在重新表述这个问题,但为了与@Leo 的回答保持一致,将旧版本留在下面]

似乎 VC++(在 VS2005 和 VS2010 下)允许我 dllexport 缺少实现的类!以下代码构建良好:

代码编译和链接都很好(在 dll 配置中) - 当然与生成的 dll 静态链接失败。这是一个错误吗?这种行为是设计使然吗?

[老问题:]

我正在尝试 dllexport 一个类,该类具有在前向声明的类型上模板化的数据成员:

(这不是一个人为的例子——在实际代码中 TemplatedClass 是一个智能指针,但这似乎与手头的问题无关。)

此代码无法编译,使用 -

错误 C2027:使用未定义类型“ForwardDeclared”

根据MS 的回复,这仍然具有某种意义:

如果 TemplatedClass 有构造函数,那么将自动为 ExportedClass 生成构造函数。由于 ExportedClass 已导出,编译器尝试导出构造函数,但无法为其生成代码,因为 ForwardDeclared 是未知的。

但我怀疑这不是最终答案,因为当我为 ExportedClass 声明(甚至没有实现!)一个 ctor 时:

编译和链接都成功(带有适当的警告*)。MS-connect 上的问题似乎已被放弃 - 也许任何人都可以对这种奇怪的行为有所了解?

谢谢!

*编辑:生成的警告是C4251:类 'TemplatedClass' 需要有 dll 接口才能被类 'ExportedClass' 的客户端使用