问题标签 [dllimport]

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 回答
11647 浏览

c# - 从非托管代码传递指针

我有一个导入 C dll 的 C# 项目,该 dll 具有以下功能:

我想访问串行参数。我实际上已经让它返回串行参数的一个字符,但我不太确定我在做什么并且想了解发生了什么,当然让它工作。

所以,我非常确定正在访问 dll,其他没有指针的函数可以正常工作。如何处理指针?我必须编组它吗?也许我得有个固定的地方放数据呢?

一个解释会很棒。

谢谢!理查德

0 投票
1 回答
781 浏览

c# - 如何在 Windows Mobile 上使用 MAPI 获取电子邮件标题?

我想在 Windows Mobile 中的 PockerOutlook 中获取电子邮件标题,但目前 Microsoft.WindowsMo​​bile.PocketOutlook 能够:

  • 枚举消息传递帐户。

  • 发送电子邮件

  • 发送短信

  • 拦截短信

所以我想 DLLImport MAPI.DLL 来获取它的功能,以获取电子邮件的标题。

我发现这个参考是用 C++ 编写的。由于数据类型不同,似乎很难转换为 C# 版本。我应该自己创建一个用 C++ 和 DLLImport 编写到 C# 应用程序的 dll 文件吗?

0 投票
2 回答
584 浏览

c++ - 托管 C++ - 根据配置文件导入不同的 DLL

我目前正在编写一个应用程序,该应用程序将为多个客户端提供类似的目的,但需要对其处理提供的数据的方式进行调整。从本质上讲,它将服务于相同的目的,但分发数据的方式完全不同。

所以我决定这样做: - 制作通用引擎库,它将包含所有方式的通用功能并提供默认界面,以确保不同的引擎将以相同的方式响应。- 为每一种运行方式编写一个特定的引擎……每一个都编译成它自己的.dll。

所以我的项目最终会得到一堆库,其中一些看起来像这样: project_engine_base.dll project_engine_way1.dll project_engine_way2.dll

现在在我们用于用户首选项的配置文件中会有一个引擎部分,以便我们可以决定使用哪个引擎:

所以在代码的某个地方我们想要做:

问题是......我将如何以这种方式导入我的 dll?甚至可能吗?如果没有,我能否就如何实现类似的运作方式获得一些建议?

我知道我可以一开始就导入所有的 dll,然后选择使用哪个引擎,但我的想法是我不想一劳永逸地导入太多引擎并浪费资源,我们也不想必须将所有这些 dll 发送给我们的客户。一位客户将使用一种引擎,另一位客户将使用不同的引擎。我们的一些客户可能会使用不止一个,因此我想将其外部化并允许我们的用户使用配置文件进行引擎切换。

有任何想法吗?

编辑:刚刚意识到,即使我的每个引擎在运行时动态加载并且不是全部在项目中引用时都会呈现相同的界面,我的项目也不会编译。所以我别无选择,只能将它们全部包含在我的项目中,不是吗?

这也意味着它们都必须运送给我的客户。配置中的设置仅使用我用来初始化我的引擎成员的类来决定。

或者

我可以将这些引擎中的每一个都编译为相同的名称。在我的主项目中只导入一个 dll,并且将一直使用该特定引擎。这将使我的客户无法将我们的应用程序用于他们自己的多个客户。除非他们愿意手动切换 dll。

有什么建议么?

编辑#2:此时看到我的选项,我还可以制作一个包含基本引擎以及所有子引擎和我的配置的大 dll,让用户选择。而不是引用多个 dll 并将它们全部发送。只需拥有一个巨大的并仅运送/参考那个。我也不太喜欢这个,因为这意味着将一个大 dll 发送给我所有的客户,而不仅仅是一两个满足客户需求的小 dll。不过,这仍然是我想出的最佳解决方案。

我仍在寻找更好的建议或答案来解决我原来的问题。谢谢。

0 投票
4 回答
1755 浏览

c# - 枚举DLL函数?

是否可以枚举 DLL 中存在的每个函数?得到它的签名怎么样?我可以在 C# 中执行此操作吗?还是我必须降低水平才能做到这一点?

问候和 tks, 何塞

0 投票
2 回答
237 浏览

c# - 我在哪里可以找到解释如何获取 C/C++ 函数头并在 C# 中使用 dllimport 定义它的参考资料?

我正在使用 setupapi.dll 来确定 USB 设备的连接性。它在 64 位版本的 Windows(XP、Vista)中无法正常工作。我怀疑声明不太正确,但不确定如何验证。MS 似乎没有提供 dllimport 信息,但它们确实列出了所有函数定义。有没有我可以用来在函数头和 dllimport 声明之间转换的资源?

我使用过 pinvoke.net,但在提供的定义中,它似乎没有考虑 64 位。

0 投票
2 回答
2734 浏览

c# - c#中NetServerEnum()的问题

我正在开发一个需要列出所有当前 LAN 机器的应用程序。

为了列出 LAN 上的所有工作站,我在导入后使用了 NetServerEnum()。

在运行程序时,它似乎工作正常。正确检测到两台现有机器。但是,我希望在需要时刷新列表(一些刷新按钮)。所以我从交换机上拆下了另一台计算机的电线,只在局域网上渲染了一台计算机。现在,当我运行程序时,它仍然列出了断开连接的机器。

如何解决这个问题?

代码如下:

0 投票
4 回答
27816 浏览

vb.net - DllImport 与 VB.NET 中的声明

我在 MSDN 文档中注意到,有多种方法可以在 VB.NET 程序中声明对外部 DLL 中函数的引用。

令人困惑的是,MSDN 声称您只能在“在极少数情况下”使用带有共享函数原型的DllImportAttribute类,但我找不到该声明的解释,而您可以简单地使用关键字来代替。Declare

为什么这些不同,我应该在哪里适当地使用每种情况?

0 投票
2 回答
2066 浏览

c# - 编组链表

为重复发布道歉。

你好

我无法从 DLL 编组链接列表。

------C++结构和功能--------

------------C#声明------------

我在 deref2 声明时收到 FatalExecutionEngine 异常。我不知道如何取回链接列表并访问其内容。

这是我为获取链表而编写的 C++ 代码。我想要类似于在 C# 中工作的东西。

0 投票
5 回答
3308 浏览

c# - 找不到指定的模块 - 64 位 dll

我有使用 Native C 编写的 32 位 dll,当我尝试使用 VC++(VS2008)编译以通过更改它编译的平台将 dll 转换为 x64 时。但是,当我尝试从也是“x64”平台的 C# 应用程序访问 dll 时,它无法加载 dll。我使用 Dllimport 将 dll 与我的应用程序链接起来。

我在 Vista 中使用的操作系统,但我无法从我的应用程序中调用 at dll 函数,它说加载 dll 失败。

有什么办法可以解决这个问题。

期待您的帮助。

问候, 嘎

0 投票
3 回答
2391 浏览

dll - dllimport 无法加载 dll

我发现 Stack Overflow 是我们所有澄清的最佳组之一。我有用 C 编写的本机 dll。我使用 VC++(VS 2008)编译了项目,使用我的 C# 应用程序,我通过 Dllimport 调用了 dll 函数。问题是它无法加载dll。它说无法加载dll。

我已经将我的 dll 和我的应用程序从 x86 编译到 x64 平台。如果你们能帮助我解决这个问题,那就太好了。

有没有可能检查为什么没有加载dll。

提前致谢。