首页新闻找找看学习计划

C#调用其他语言编写的DLL组件的问题

0
悬赏园豆:20 [已解决问题] 解决于 2013-02-22 15:53

我用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的时候路径有问题

问题补充:

这个DLL组件不是标准的COM组件,无发注册到注册表,也无法直接添加引用

zhengjinfeng的主页 zhengjinfeng | 初学一级 | 园豆:90
提问于:2013-02-19 10:37
< >
分享
最佳答案
0

TaxCardX.dll 必须和你的C#程序集在同一个目录,或者 TaxCardX.dll 放置到 System32 目录下。

收获园豆:15
Launcher | 高人七级 |园豆:45040 | 2013-02-19 10:40

其实我两个目录都放了,而且我也试过指定绝对路径也不行

zhengjinfeng | 园豆:90 (初学一级) | 2013-02-19 10:42

@zhengjinfeng: 你检查下 TaxCardX.dll 是否依赖了其它 DLL。

Launcher | 园豆:45040 (高人七级) | 2013-02-19 11:04

@Launcher: 估计是吧,还没找到原因

zhengjinfeng | 园豆:90 (初学一级) | 2013-02-19 11:48
其他回答(3)
0

你的dll需不需要注册一下呀!

收获园豆:5
li-peng | 园豆:954 (小虾三级) | 2013-02-19 12:56

这个组件无法注册,直接在工程里面添加引用也是不行的

 

未能添加对“d:\我的文档\Visual Studio 2010\Projects\TaxCardAdapter\WindowsFormsApplication1\TaxCardX.dll”的引用。请确保此文件可访问并且是一个有效的程序集或 COM 组件。

支持(0) 反对(0) zhengjinfeng | 园豆:90 (初学一级) | 2013-02-19 13:20

@zhengjinfeng: 

你是这么注册的么

运行--cmd--regsvr32 dll的绝对路径名(路径实例:c:/dll/xxx.dll)

支持(0) 反对(0) li-peng | 园豆:954 (小虾三级) | 2013-02-19 14:03

@zhengjinfeng: 

看看这个

http://www.2cto.com/kf/201011/78718.html

支持(0) 反对(0) li-peng | 园豆:954 (小虾三级) | 2013-02-19 14:10
0

应该要指定一下dll入口点的

飞鸟_Asuka | 园豆:251 (菜鸟二级) | 2013-02-19 14:32
0

路径。依赖项。

来自北方 | 园豆:395 (菜鸟二级) | 2013-02-21 14:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册