问题标签 [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 回答
228 浏览

c# - 在 C# 中调用 C DLL 时出现问题

我目前正在尝试从 C# 调用 C 中的方法

C 代码如下所示:

和 C# 代码如下所示:

该代码返回正确的值,但我收到以下错误:

addSum' 使堆栈不平衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。

关于这个问题有什么建议吗?

谢谢

0 投票
4 回答
3125 浏览

c# - 从 C++ 创建 COM 对象?

我想从 C++ 代码创建一个 dll 并在 C# 中使用它。是否有从 C++ 创建 COM 对象的解决方案?
我不想使用System.Runtime.InteropServices.

非常感谢

0 投票
2 回答
1405 浏览

c# - C# 在 Fortran dll 中找不到入口点


我得到了一个工作的 FORTRAN 程序,我必须为它编写 C# GUI(不要问为什么)。这个程序已经有了 FORTRAN GUI,所以我把所有的计算子程序都提取出来放到 FORTRAN dll 中。该 dll 由 4 个文件构成:一个静态库、一个 FORTRAN77 文件(.for)和两个 FORTRAN90 文件(.f90)。我已将所有应该从 C# 代码中调用的子例程放入 EXPORT.f90。
FORTRAN 代码:

现在我正在尝试用 C# 调用它们

我得到 EntryPointNotFoundException“无法在 'MYDLL.dll' 中找到入口点 'SETLK'”。我该怎么做才能让它工作?
谢谢

0 投票
2 回答
865 浏览

c# - 通过 c++ 64 位 dll 在 64 位 .net 应用程序中调用

我在调用 ac# 应用程序内的 c++ dll 中的函数时遇到问题。我在 c# 中调用函数,如下所示:

它正在 c++ dll 中导出,如下所示。

但是,当我尝试调用它时,我得到的是“外部组件引发了异常”。例外,这根本不是描述性的,而且非常无益。

当我在导出查看器中拉出 dll 时,它会显示所有其他具有完全量化声明的导出函数(IE public: void __cdecl CryptoPP::X509PublicKey::`vbase destructor'(void) __ptr64 ),除了我的函数调用,它只显示函数名称 RSAEncryptString。

这是我能看到的唯一可能的问题,除了可能在 c# 端使用无效声明错误调用函数。我使用 System.Runtime.InteropServices.Marshal 错了吗?

请帮助<3,并在此先感谢。

0 投票
5 回答
26047 浏览

c# - 如何 DllExport 一个 C++ 类以在 C# 应用程序中使用

我创建了一个包含类“myCppClass”的 C++ Dll 项目,并尝试使用以下代码将其导出为 Dll:http: //msdn.microsoft.com/en-us/library/a90k134d(v=vs. 80).aspx

我省略了“公共 CObject”,因为它需要 afx.h 并暗示它是一个 MFC Dll。我不确定这是否是一件好事,但它与 DLL 项目的默认设置不同。

从上面的链接文档中,我相信所有“公共函数和成员变量”都可以导入。我如何在 C# 中实现这一点?可以简单地实例化类吗?

编辑:我刚刚意识到帖子的标题可能具有误导性。重点应该放在 C# 中的 DllImport-ing 上,并确保我在 C++ 中正确遵循了文档

0 投票
4 回答
66355 浏览

c# - 是否可以像在 VS C++ 中一样从 C# DLL 导出函数?

在 VS C/C++ 中,您可以使用extern "C" __declspec(dllexport) -function declaration-.

如何在 C# dll 中完成此操作?是否有与上述代码等效的 C# 代码?

编辑:更多信息

我正在尝试为 Notepad++ 创建一个插件并且我想使用 C#,但到目前为止我看到的常见方法是使用带有上述调用的旧版 C++ 代码来导出 Notepad++ 期望导入的一些函数和称呼。有一个使用 C# 的示例应用程序,但这仍然需要一个加载器 DLL,我从下面的评论/答案中假设它是 C# 的唯一方法。

0 投票
5 回答
8937 浏览

c++ - 在 VB6 中使用 C++ DLL

我刚刚在 MSVC++2010 中为我的老板创建了一个 DLL。我选择了带有“导出符号”选项的“新 Win32 DLL”,所以一切都是完全标准的。新项目文件中有一些预定义的导出,一个类,它的构造函数,一个全局函数和带有虚假值的变量,以及一个带有 APIENTRY 函数的文件 dllmain.cpp。我什么都没改变。

现在我的老板想在他的 VB6 项目中使用导出的东西。他开始了一个 VB6 项目,做了菜单“项目”-“链接”(从德语翻译成英语,所以可能有些不同,但我相信你知道我的意思)并选择了一个 DLL 文件,就像他说的那样通常会。

但是,VB6 无法包含它,而是显示错误消息“无法包含 DLL 文件”(没有给出真正的原因)。来自 Visual C++ 6 的标准新 DLL 项目也是如此。我的老板认为这可能是因为符号没有真正导出,或者 VB6 需要一些特殊的声明。有谁知道问题是什么?

0 投票
2 回答
8696 浏览

static - Visual c++下dllimport /dllexport和静态库编译

我非常需要你的帮助。

我正在尝试使用 Visual c++ 2008 编译器在 Windows 上静态编译 poppler 库(特别是 qt4)。为了完成这项任务,我还需要静态编译一堆其他库作为 poppler 的依赖项。当我最终生成 poppler 的静态版本时,在构建我的应用程序时出现链接错误:

我已经添加了新的包含路径并链接了 poppler-qt4.lib 但我还是得到了错误。寻找解决方案我在stackoverflow中找到了这个讨论

如何在 Visual C++ 2008 中链接静态库?

有了这些信息,我查看了库的包含文件(poppler 的依赖项,如 zlib、libpng、cairo ......),我发现在各种情况下,它们没有预处理器指令来指定静态版本库。静态指令示例(openjpeg.h):

没有静态指令的示例(来自 jpeg lib 的 jconfig.h):

我的问题是:将项目的属性从动态更改为静态还不够,所以我还必须更改此标头?如果这是真的,我在哪里可以定义这个新指令以区分静态或动态编译?

提前致谢。

0 投票
5 回答
25702 浏览

excel - 如何将 VBA 代码保存到 DLL 库?

出于安全目的,我想将我的宏从 Excel 工作簿中的 VBA 保存到稍后从文件中调用的 DLL 库文件中。

这样就可以将我的任何版本的宏部署到公司的 PC 上,但没有人会看到它背后的真实代码。

这怎么可能?我已阅读有关转换为 C++ 和创建 DLL 的内容。有什么分步解决方案吗?

0 投票
2 回答
972 浏览

c++ - 导出 DLL 类和函数并将它们导入 Win32 应用程序

我有一个带有类的 dll,该类在其中定义了一些方法和变量。我把它标记为

我在同一个解决方案中的 win32 应用程序项目中导入了 .h 标头。我可以使用这些函数,但是当我尝试编译项目时,我遇到了很多关于未解析外部符号的错误。为什么?