dll
我用Depends看了确实有个哪个函数但是当我调用的时候
[DllImport("Decode.dll", CharSet = CharSet.Auto)]
private static extern IntPtr GetIdCode();
却发生错误
无法加载 DLL“Decode.dll”: 动态链接库(DLL)初始化例程失败。 (异常来自 HRESULT:0x8007045A) 绝非路径问题。我换成绝对路径。或拷贝到 system32下都出错我又用了另一种方法
[DllImport("kernel32.dll")]
public extern static IntPtr LoadLibrary(String path);IntPtr i = LoadLibrary("Decode.dll")则结果为零
GetLastError()错误为1114;则我又用另一种方法
[DllImport("kernel32.dll")]
public extern static IntPtr LoadLibraryEx(string lpLibFileName, int hFile, int dwFlags);IntPtr i = LoadLibraryEx(DLLPath,0,1) 这个到没问题。但是最后获取GetIdCode()的值的时候 缺出现尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
我用Depends看了确实有个哪个函数但是当我调用的时候
[DllImport("Decode.dll", CharSet = CharSet.Auto)]
private static extern IntPtr GetIdCode();
却发生错误
无法加载 DLL“Decode.dll”: 动态链接库(DLL)初始化例程失败。 (异常来自 HRESULT:0x8007045A) 绝非路径问题。我换成绝对路径。或拷贝到 system32下都出错我又用了另一种方法
[DllImport("kernel32.dll")]
public extern static IntPtr LoadLibrary(String path);IntPtr i = LoadLibrary("Decode.dll")则结果为零
GetLastError()错误为1114;则我又用另一种方法
[DllImport("kernel32.dll")]
public extern static IntPtr LoadLibraryEx(string lpLibFileName, int hFile, int dwFlags);IntPtr i = LoadLibraryEx(DLLPath,0,1) 这个到没问题。但是最后获取GetIdCode()的值的时候 缺出现尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
vc++ dll是别人写好的一个dll。
我的QQ376597485
public partial class test : Form
{
[DllImport("D:\\dll\\debug\\dll.dll")] // dll在磁盘中的存放位置
public static extern int add(int a, int b);
private void SetButtonClick(object sender, EventArgs e)
{ MessageBox.Show(Convert.ToString(add(3,2)));
}}vc++ dll:dll.dll(dll中包含一个add求和方法)dll.h:extern "C" __declspec(dllexport) int add(int a, int b);dll.cpp:
int add(int a, int b)
{
return a+b;
}
此外需要一个.def文件用于导出函数,内容为:LIBRARY "dll"
EXPORTS
add @1 代码:测试步骤:首先确保你调试的vc生成的dll是debug版的,运行调用这个dll的c#程序,在打开vc dll那个项目的ide中选择“调试-附加到进程”手工附加刚才运行的c#程序的进程(在弹出的对话框中要选中Native(本机)),然后就应该可以进入vc代码中进行调试了(当然该dll的入口要设置断点了)我的测试环境为:windows2000, visual studio 2005
C++ 的dll没有源码。 我想应该不会是DLL的问题。要不然别人怎么会可以调用呢