我无法从 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 位。例如,正确的调用约定是什么?modelFilePath
device
CNTK_ReleaseModel
modelFilePath