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

c++ - LoadLibraryEx:参数在 64 位中丢失

我有一个导出函数的 64 位 DLL

这被实现为

和一个调用该函数的 64 位 DLL

在 32 位模式下,函数调用成功,但在 64 位模式下,到达函数入口点但参数无效?我能做什么?

0 投票
1 回答
546 浏览

dll - 如何将变量传递给 DLL 导出的函数,我得到错误 LNK2001

我必须将 HWND 变量从主程序传递给 DLL 导出的函数。变量称为 mainHwnd,DLL 以这种方式定义:

mydll.h

mydll.cpp

主程序

编译我得到

在使用 dumpbin /exports mydll.dll 时,我得到全局变量名被破坏为:

我在谷歌上浏览了很多页面都没有结果。也许有一个概念错误..谢谢

0 投票
1 回答
483 浏览

c++ - 从 DLL 导出函数中释放 CStringArray& 参数时的堆冲突

我开发了一个 MFC dll,其中包含一个具有此原型的函数:

我遇到的问题是在调用函数之后(从可执行文件)。arrData 的析构函数将被调用并尝试释放内存,但它不会成功,因为arrOfData的分配是在另一个堆(在 dll 内)上完成的。虽然我已经使用相同的环境设置编译了两个应用程序(Exe 和 Dll),但在调试和发布模式下我仍然遇到问题。我该如何解决这个问题?

堆冲突发生在代码块存在之前

0 投票
2 回答
1101 浏览

delphi - Delphi dll导出记录

谁能告诉我是否可以从 dll 中导出记录?如果是,那么该怎么做?

我的记录如下:

0 投票
1 回答
703 浏览

visual-c++ - Visual C++ 6.0 名称修改,即使在 extern "C" 和 dllexport 中,也不会生成 RPC 存根

嘿,伙计们,我正在努力在旧版 Visual C++ 6.0 dll 项目中创建一个新函数,以便可以调用 C# dll,但是由于名称修改,我无法这样做,而且似乎无论我做什么我都无法阻止它,(我用dumpbin查看名字)这里是相关代码

这是头文件的一个真正精简的版本

对于 cpp 文件

dumpbin 返回以下 1 0 00001401 ?V7ssGetFileDirInfoUnicode@@YAKPBDW4tag_V7_FILE_LIST_TYPE@@000PAKPAG2@Z

不是我想要的理想它只会是 V7ssGetFileDirInfoUnicode

据我所知,从我一直在阅读的内容来看,我试图这样做意味着我不需要在 .def 文件中定义它。奇怪的是,我遵循与正确显示的预先存在的功能相同的精确设置。

如果有任何帮助,我将不胜感激。谢谢!

更新

.def 文件选项的工作原理不是名称修改,也就是说 MIDL 编译器没有创建 RPC 存根,我认为这两个问题是相关的。

这里也是 MIDL 版本,取自 C 文件本身

0 投票
4 回答
693 浏览

c++ - 尴尬的 DLL 导出部分

我在 MSVC2010 中有一段 C++ 代码,它创建了一个 DLL 包装器。代码部分看起来像这样......

或者...

我希望我的导出部分在这个 dll 上做一个 dumpbin 只包含完全限定的函数名,但它看起来更像这样。

我不知道为什么有这个等号或它意味着什么。我有一种强烈的感觉,即导入 dll 的程序无法访问该功能,因为它没有做它应该做的事情。

为了提供足够的信息,我已经包含了一些编译器和链接器开关

编译器选项:

链接器选项:

注意:/IMPLIB:"MyProj.lib" -> 这个导入库包含我希望在我的 DLL 中具有的所有导出,其格式是我希望它们在 dll 中的格式。

我的项目选项中是否有任何设置会导致这种情况?在过去几年中,dllexport 是否有任何我可能错过的变化?有什么我可以提供给你的信息来帮助你理解我的问题吗?

0 投票
0 回答
935 浏览

visual-studio-2010 - 嵌套类、dllexport 和 VS2010

让我们有以下代码:

所以:

  • 我有一个要导出到 DLL 的类。
  • 这个类也有一个要导出到 DLL 的子类。
  • 有类型的变量 ('x...') template <subclass>
  • 成员变量也需要 dll 导出。
  • 所以我需要template <subclass>在使用这种类型之前显式地实例化。
  • 但这是不可能的,因为实例化只能在全局范围内进行。
  • 但是在全局范围内,子类(还)没有定义。

  • template <class::subclass>类体之后的实例化没有效果。

那么如何正确处理这个问题,避免任何警告和错误呢?

顺便说一句:类中模板的实例化在 VS2008 中运行良好。

先感谢您。

葡聚糖

0 投票
1 回答
554 浏览

64-bit - dllexport is not recognize in x64 bit platform

I am using vs2008 C++ I need the dll to be output in two mode 32 bit and 64 bit. I am able to compile the code without any error for 32 bit platform but when I switch the platform to x64 bit the error C2065: 'dllexport': undeclared identifier and C2448"_declspec': function-style intializer appears to be a function definition come out. In fact when I switch to x64 platform I didn't make any changes on the code (even a single line of code). Can somebody help me? Thanks in Advance!!!

0 投票
2 回答
2690 浏览

c# - 从跨平台 DLL 返回整数数组

我用 C++ 创建了一个跨平台的 DLL,可以在 Windows 和 Mac OSX 上编译。在 Windows 上,我有一个 C# 应用程序使用 P/Invoke 调用 DLL,而在 Mac OSX 上,一个目标 C 应用程序调用 DLL。我的简单函数工作得很好,但我需要一个返回整数数组的新函数。

我能找到的最好的例子是Marshal C++ int array to C#,我能够让它工作。但是,我想修改此示例以将整数数组作为参考参数传回。数组的大小必须在运行时设置。

这是我尝试过的。pSize 正确返回,但列表为空。

在非托管 C++ 中:

在 C# 中:

0 投票
1 回答
2539 浏览

dll - 如何在 MinGW 中指定 dll 导出的确切序数?

我正在尝试使用 MinGW 构建一个 DLL,我需要增加它生成的导出。我需要为某些导出的函数分配特定的序号。

我创建了一个 .DEF 文件,但我找不到告诉 MinGW 链接器使用它的选项。甚至可能吗?