【问题标题】:windows service Can't call C++ Native Methods [DllImpor("myDLL")]windows 服务无法调用 C++ 本地方法 [DllImpor("myDLL")]
【发布时间】:2014-01-25 13:10:57
【问题描述】:

我尝试使用这种方式: DLLImport a variable MFC dll 它有效。

问题是C++ dll "myDLL" 需要另一个DLL "XDLL", 我找到 服务启动时的服务当前文件夹是 system32,而不是 assemble 所在的位置!!! 在这种情况下,如果我将 "XDLL" 放在 system32 中,它会起作用...

我需要的是在不将任何内容复制到 System32 或其他任何方式的情况下运行它

C# windows 服务问题吗?或C++ ?我该怎么办?

谢谢

【问题讨论】:

  • 只要把它和你的服务exe放在同一个文件夹里。然后谷歌“SxS DLL”
  • 不起作用,因为对于服务启动时的服务当前文件夹是 system32,它不是组装的地方!
  • 所以 #ta.speot.is ,如果你不能回答这个问题,请删除你的 (-1 )
  • msdn.microsoft.com/en-us/library/windows/desktop/…1。加载应用程序的目录。
  • 谢谢,我会尽力理解

标签: c# c++ windows-services pinvoke dllimport


【解决方案1】:

如果 DLL 仅按名称指定,即没有完整路径,则 Dynamic-Link Library Search Order 发挥作用。

这有很多 if 和 buts,但最重要的是,如果您将可执行文件所需的所有 DLL 与可执行文件放在同一目录中,那么加载程序将能够找到 DLL。这是最佳实践,因为它不需要配置,并且您可以确定要加载哪个版本的 DLL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多