有一个C++程序,我要在C#项目中调用C++程序中的DLL文件,下面是我做过的一些操作:
第一步:直接在.net中添加dll应用报错“找不到类型库” 第二步:用DOS注册DLL文件 regsvr32 报错“找不到指定的模块” 第三步:直接把DLL文件拷贝到windows/system32目录下,并且也拷贝到项目的bin目录中用,用代码 [DllImport("LedCtrl.dll")] // LedCtrl.dll C++程序中的dll文件 public static extern bool LSN_IsPower(); //LSN_IsPower c++程序中的一个方法 调用,程序运行报错 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)以上几种引用DLL文件的方法都试过了无效,请问大家有什么解决方案给个支持
写了一下代码用来打开DLL文件。。其它的DLL文件可以打开。。就是不能打开LedCtrl.dll ///<summary>
/// API LoadLibrary
///</summary>
[DllImport("Kernel32")]
public static extern int LoadLibrary(String funcname); ///<summary>
/// API GetProcAddress
///</summary>
[DllImport("Kernel32")]
public static extern int GetProcAddress(int handle, String funcname); ///<summary>
/// API FreeLibrary
///</summary>
[DllImport("Kernel32")]
public static extern int FreeLibrary(int handle);
这是C++中源码的调用DLL
int dllint= LoadLibrary("LedCtrl.dll");
if (!dllint)
{
dllint= LoadLibrary("..\\LedCtrl.dll");
return false;
}
大家帮忙看看。。用什么方式能够在C#中调用C++的DLL文件
谢谢!
解决办法是把跟dll有关的文件全部放在bin目录下 然后Import
找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
1、“直接在.net中添加dll应用报错“找不到类型库””
C++的动态库不能直接添加到net工程里。
2、“用DOS注册DLL文件 regsvr32 报错“找不到指定的模块””
你些的是动态库,而非COM组件,所以不能注册。
3、“调用,程序运行报错 找不到指定的模块”
这类问题,一般是由于你的动态库,还依赖别的动态库,用VC的DEPENDS.EXE工具打开一看就能知道。