来自非托管delphi DLL的相对路径引发异常

时间:2015-05-18 06:01:24

标签: c# .net pinvoke

我有一个带导出函数的Delphi DLL。我希望在我的dllimport语句中使用该DLL的相对路径,其中可以找到Windows窗体的可执行文件。但是,我收到了这个例外:

  

其他信息:无法找到入口点名称。

public class NativeMethods {
    [DllImport("DelphiDll.dll",
               EntryPoint = "InitDll",
               CallingConvention = CallingConvention.StdCall)]
    ...

当我放置绝对路径时,它没有问题。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

因为您仅指定了DLL名称而没有其路径,所以系统DLL搜索路径用于定位DLL。这在此处记录:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586.aspx

由于错误是入口点未找到,表明找到了DLL,但它没有导出该函数。您还报告使用绝对路径,找到入口点。根据该证据,我们可以得出结论,您的计算机上存在此DLL的多个版本。

放置DLL的最佳位置与可执行文件位于同一目录中。这是第一次搜查。在那里放置正确版本的DLL。