0

我无法从 C# 调用 Cntk 函数。我使用的头文件是来自二进制 CNTK 安装的 CNTKLibraryC.h,我加载的 DLL 是来自同一安装的 Cntk.Core-2.5.dll。我目前对 CNTK_LoadModel 的互操作签名:

[DllImport(DllName, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] private static extern IntPtr CNTK_LoadModel( IntPtr modelFilePath, IntPtr device, out IntPtr model);

如果我对和都使用模型文件名(贯穿Marshal.StringToHGlobalUni()),则此“有效” ,但之后我无法调用程序崩溃。有时,如果我将不存在的路径传递给 ,我也会成功,因此很明显,第二个参数被用作模型文件名,这与函数签名所暗示的相反。我怀疑我在这里忽略了一些东西。我不习惯从 C# 调用本机 64 位 DLL,只有 32 位。例如,正确的调用约定是什么?modelFilePathdeviceCNTK_ReleaseModelmodelFilePath

4

0 回答 0