【发布时间】:2012-03-05 17:16:00
【问题描述】:
我有一个本地 dll 形式的第 3 方 API,我使用 DllImport 从 C# 调用它。此原生 dll 依赖于正在打开的 3rd 方应用程序。
当我正常运行代码时,API 会执行预期的操作并驱动应用程序。但是,当我运行与 Windows 服务相同的代码时,即使是我自己,API 也会返回与我在应用程序关闭时看到的相同的(未记录的)错误代码;进程资源管理器确认本机 dll 已从应用程序目录正确加载。
这可能是什么原因造成的,我该如何解决这个问题?
【问题讨论】:
-
您是否尝试使用虚拟的非托管 dll 来加载以确定错误发生的位置:在 p/invoke 中还是在您的 dll 本身中?
-
@abatishchev - 不,但这绝对不是服务的问题,我已经剥离了服务,因此它所做的只是 p/invoke 非托管 dll。我认为 Fadrian Sudaman 说问题可能与在不同会话中运行的应用程序和服务有关,或者类似的事情是正确的。至少可以说,第 3 方软件相当复杂。
-
所以来自控制台应用程序的 p/invoke 工作正常,而不是来自 Windows 服务?
-
@abatishchev - 是的,情况就是这样。
-
当 dll 位于包含空格的路径中时遇到问题
标签: .net windows windows-services pinvoke unmanaged