我用C#调用一个DELPHI写的DLL组件遇到了一个问题,抛出了DllNotFoundException
无法加载 DLL“TaxCardX.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)
代码如下:
//类的定义 public class TaxCardTest { [DllImport("TaxCardX.dll")] public static extern int OpenCard(); [DllImport("TaxCardX.dll")] public static extern int GetInfo(); } //调用时会抛出DllNotFoundException异常 TaxCardTest.OpenCard();
不知道是不是在引用DLL的时候路径有问题
TaxCardX.dll 必须和你的C#程序集在同一个目录,或者 TaxCardX.dll 放置到 System32 目录下。
其实我两个目录都放了,而且我也试过指定绝对路径也不行
@zhengjinfeng: 你检查下 TaxCardX.dll 是否依赖了其它 DLL。
@Launcher: 估计是吧,还没找到原因
你的dll需不需要注册一下呀!
这个组件无法注册,直接在工程里面添加引用也是不行的
未能添加对“d:\我的文档\Visual Studio 2010\Projects\TaxCardAdapter\WindowsFormsApplication1\TaxCardX.dll”的引用。请确保此文件可访问并且是一个有效的程序集或 COM 组件。
@zhengjinfeng:
你是这么注册的么
运行--cmd--regsvr32 dll的绝对路径名(路径实例:c:/dll/xxx.dll)
应该要指定一下dll入口点的
路径。依赖项。