调用DLL导入函数时。永远不会到达下一行代码?

时间:2014-11-03 08:25:59

标签: c# visual-c++ interop extern

我使用以下方法从C#调用导入的C ++ dll(自定义OpenGL窗口dll)函数:

[DllImport("Renderer.dll", EntryPoint = "LoadModelsAndMotions", CallingConvention = CallingConvention.Cdecl)]
public static extern void LoadModelsAndMotions(string[] modelFiles, int nModels, string[] motionFiles, int nMotions);

我使用了大约四五个功能。唯一的问题是这个函数在被调用时导致我的c#app中的下一行代码永远无法到达。

如果我用我的代码内联运行它,我的UI会锁定,直到它完成但后面的代码没有执行。

如果我在异步任务中运行它,则永远不会在任务中调用此代码之后的代码。

如果有人有任何想法,为什么会这样呢?

1 个答案:

答案 0 :(得分:1)

我建议检查导入方法的签名是否正确(如果它真的是string[]参数,请查看MarshalAsAttribute)。您也可以尝试将SetLastError = true添加到属性中,如果这会改变任何内容。