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

c# - 将指针(即 int[])传递给 DLL 时,“固定”真的能保证什么吗?

我尝试搜索这个但没有找到任何东西,但是当将 int[] 作为指针传递到本机 DLL 函数时,是否仍然存在 DLL 可以维护对指针的引用的危险,然后尝试在“固定”块终止后再次访问它?如果 GC 移动了您的数组,这不会导致内存访问错误吗?如果是这样,你如何解决这个问题?或者这是一个不太可能的情况?

0 投票
2 回答
1499 浏览

c# - 从 P/Invoke 捕获 DllNotFoundException

找到带有解决方案的帖子如何处理失败的 DllImport?

我正在编写一个应用程序来检查操作系统版本以根据主机是使用 Vista 系列还是 NT 系列版本的 Windows 来执行不同的操作。如果是 Vista 系列,它会加载一些 DLL(使用 DllImport),但不使用这些。问题是,如果在没有这些 DLL 的旧版本 Windows 上使用,使用 DllImport 加载它们将在运行时导致 DllNotFoundException。

如何捕获/防止/忽略 DllNotFoundExceptions?尝试在我的未处理异常事件中将异常设置为“已处理”不允许应用程序继续。

0 投票
3 回答
2505 浏览

c++ - 从 Delphi 应用程序调用外部函数 (C++) 时访问冲突

我有一个用 C++ 编写的外部 DLL。下面的部分声明了一个结构类型和一个函数,给它一个指针,填充这个类型的变量:

我在我的Delphi应用程序中声明了一个类似的类型并调用上述函数:

调用该函数时,我收到调试器异常通知:

项目 ... 引发异常类 EAccessViolation,并带有消息“模块“Scraper.dll”中地址 10103F68 的访问冲突。读取地址 FFFFFFFC'。进程停止。

从同一个 DLL 导出的其他函数工作正常,所以我猜我在类型声明中犯了一个错误。任何提示都将受到高度赞赏,因为我在这一点上已经陷入困境。

0 投票
2 回答
4719 浏览

c# - C# DllImport MFC 扩展 DLL 和名称修饰

我有一个要在 C# 应用程序中使用的 MFC 扩展 DLL。我公开的函数是 C 函数,即我正在像这样导出它们

这些函数在内部使用 MFC 类,所以我必须做什么才能使用 P/Invoke 在 C# 中使用 DLL。

其次,我想使用函数重载,但据我所知,C 不支持函数重载,如果我导出 C++ 函数,它们将被破坏。那么我能做些什么来解决这个问题呢?我们可以使用DllImport导入 C++ 错位函数吗?

0 投票
1 回答
641 浏览

dllimport - 如何导入/导出 dll 并使用其功能

我正在开发一个项目。我想从 7zip 软件中包含一个特定的功能来解压缩数据。它有点将 7zip 软件中的特定功能导出到我的项目中。我应该使用 DLL 导入和导出还是有其他方法?

0 投票
1 回答
1073 浏览

sql - SQL CLR 存储过程 - DllImport 的相对路径?

我有一个 C# 项目,其中包含从解决方案中的另一个项目引用 win32 dll 的存储过程。目前,dllimport 使用绝对路径来引用它。如果我改用相对路径,那么一旦将 clr 存储的 procs 程序集加载到 sql server 中,该路径相对于哪里?

0 投票
3 回答
3407 浏览

c# - C# 中的 C++:C++ 函数(在 DLL 中)返回 false,但 C# 认为这是真的!

我正在编写一个小 C# 应用程序,它在 C++ API 中调用一些函数。我将 C++ 代码构建到 DLL 中,C# 代码使用 DllImport 调用 API。(我正在为 C++ DLL 使用 .DEF 文件,所以我不需要 extern "C"。)

到目前为止,API 有一个功能,目前完全没有做任何事情:

在 C# 中,我有以下内容:

我的问题是,出于某种原因, b 总是评估为TRUE。我在 if (!b) 上有一个断点,调试器将其报告为“真”,与 C++ 函数返回的内容无关。

C# bool 是否与 C++ bool 相同?尽管即使不是这种情况,我仍然不明白它如何找到返回值是“真”:)

谁能帮我解决这个奇怪的差异?

提前致谢!

0 投票
2 回答
2012 浏览

c# - 垃圾收集代表的回调

我正在使用 USB 设备。此设备接收消息,我不知道何时或多久。驱动程序附带的 API 指定了一个 setreceiveCallBack 函数,该函数在设备接收到消息时提供回调。但是在随机时间或间隔,我会收到有关垃圾收集委托异常的回调。我已经为我的问题寻找解决方案,但似乎没有一个解决方案适用于我的情况。以下是我的代码的最大部分:

0 投票
2 回答
367 浏览

dllimport - DLL 项目中的 HELP 链接库

您好,我在 VS08 中有一个 DLL 项目,它引用了一些来自 lib32eay.dll(openssl) 的代码。当我构建 DLL 时,它在我的机器上运行良好,因为我安装了 openssl。但是,我的客户没有安装 openssl,因此他们在运行我的应用程序时会出错,因为它引用了 openssl dll。我如何构建一个 DLL 项目,以便它可以包含所有需要的东西,所以我不必担心客户没有一些缺少的 3rd 方库等??

0 投票
7 回答
8675 浏览

.net - Free unmanaged memory allocation from managed code

A .NET application calls C dll. The C code allocates memory for a char array and returns this array as result. The .NET applications gets this result as a string.

The C code:

The C# code:

Some tests of it show that the garbage collector does not free the memory allocated by the C code.

Any help will be appreciated. :)