我正在使用外部dll,但我收到此错误
类型' System.DllNotFoundException'未处理的异常发生在ACRCloudExtrTest.exe中。 其他信息:无法加载DLL' acrcloud_extr_windows_1.0.1.dll':找不到指定的模块。 (HRESULT异常:0x8007007E)
我已将dll放在项目文件夹中,也在system32和sysWOW64中,但没有任何效果。
我在这里打电话给dll:
class ACRCloudExtr
{
public static byte[] CreateFingerprint(byte[] pcmBuffer)
{
byte[] fpBuffer = null;
if (pcmBuffer == null || pcmBuffer.Length <= 0)
{
return fpBuffer;
}
IntPtr pFpBuffer = IntPtr.Zero;
int fpBufferLen = create_fingerprint(pcmBuffer, pcmBuffer.Length, ref pFpBuffer);
if (fpBufferLen > 0)
{
fpBuffer = new byte[fpBufferLen];
Marshal.Copy(pFpBuffer, fpBuffer, 0, fpBufferLen);
free_fingerprint(pFpBuffer);
}
return fpBuffer;
}
[DllImport("acrcloud_extr_windows_1.0.1.dll")]
private static extern int create_fingerprint(byte[] pcm_buffer, int pcm_buffer_len, ref IntPtr fps_buffer);
[DllImport("acrcloud_extr_windows_1.0.1.dll")]
private static extern void free_fingerprint(IntPtr fps_buffer);
}
答案 0 :(得分:0)
如果您的项目参考中有该dll,请右键单击它 - &gt; 属性 - &gt; 复制本地 - &gt;设为 true 。
否则,如果该dll在项目文件夹中作为dll文件添加到您的项目中,请右键单击 - &gt; 属性 - &gt; 复制到输出目录 - &gt;设为始终复制。
构建您的项目。
答案 1 :(得分:0)
- 使用Dependency Walker检查您的DLL以查看它调用的其他DLL。
复制项目输出文件夹中的这些DLL。他们可能有自己的依赖来解决。