我有第三方C#库我的代码引用,我们称之为a.dll
,此库依赖于非托管C dll cApi.dll
。 C库包含x86
和x64
,我将它们存储在各自的文件夹中并设置Copy always
。当我从我的代码中调用a.dll
的init方法时,我收到错误消息Unable to load DLL 'cApi.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
。我的代码引用了a.dll
,所以调试时我的bin看起来像:
仓/调试/
--- A.DLL
--- 86 /
------ cApi.dll
--- 64 /
------ cApi.dll
当我检查a.dll
中的代码时,它使用DllImport属性来调用cApi.dll
。如果我将cApi.dll
中的任何一个复制到同一目录a.dll
输出到,我将不会收到错误。 DllImport不会搜索bin中的子目录吗?如何解决此问题,是否应该添加构建逻辑以将正确的cApi.dll
复制到与a.dll
相同的目录,或者是否有办法使其与当前结构一起使用?
编辑我的配置文件中有<probing>
元素:<probing privatePath="x86;x64"/>