C#DLL运行时错误 - 构建,运行,但在尝试使用DLL函数时抛出未处理的异常

Ant*_*ony 6 c# dll runtime

我正在尝试编译此处显示的C#示例项目.它必须转换为VS2010,但工作正常.它构建,运行,但在尝试访问DLL函数时死亡.

我制作了一系列图片来展示我的步骤.如您所见,我设计的设备已连接并正确配置,但我真的认为这与该问题无关.在Form1.cs文件中,以下注释说明了如何使用DLL:

/*
PLEASE NOTE
You must add a reference to the FTChipIDNet.dll in order to use this sample
To do this:
1. Click on Solution explorer tab.
2. Right click the References tree.
3. Choose Add Reference option.
4. Browse to the FTChipIDNet.dll (as a personal preference I place this in my bin directory)
5. Click OK
*/
Run Code Online (Sandbox Code Playgroud)

我按照上面显示的说明修改了名称空间FTChipID的未定义引用.我还手动检查了对象浏览器,以确保GetNumDevices函数存在并且确实存在.

单击该按钮会产生以下错误:

DLLNotFoundException未处理:

无法加载DLL"FTChipID.dll":找不到指定的模块.(来自HRESULT的异常:0x8007007E)

在这行代码:

FTChipID.ChipID.GetNumDevices(ref numDevices);
Run Code Online (Sandbox Code Playgroud)

现在,你可能会想"错误说它需要FTChipID.dll,而不是FTChipIDNet.dll." 我想知道同样的事情.我有FTChipID.dll以及.lib和.h文件,但我不知道如何使用它们或它们需要在哪里才能让这个程序找到它们.我尝试添加对FTChipID.dll的引用,但VS2010说

无法添加对...\FTChipID.dll的引用.请确保该文件是可访问的,并且它是有效的程序集或COM组件.

我也不知道这意味着什么.有任何想法吗?提前致谢.

Leo*_*ons 2

FTChipIDNet.dll 是 FTChipID.dll 的包装器,因此您需要添加对解决方案的引用(如上面所做的那样),然后将 FTChipID.dll 复制到 FTChipIDNet.dll 所在的 bin 文件夹中。

这两个 dll 应位于解决方案的 bin 文件夹中才能运行,而不应位于 windows\system32 中。

  • @Anthony:在项目属性中,将“目标框架”更改为 32 位 x86。 (2认同)