【问题标题】:How to Specify Correct Marshaling for DLL Import in C#如何在 C# 中为 DLL 导入指定正确的封送处理
【发布时间】:2013-04-24 21:52:59
【问题描述】:

我正在使用 DLL Import 来使用 C dll 中的某些功能。函数的签名是

int dllfunction(myfile **fptr, const char *filename, int *status);

下面的行中有哪些编组代码以便我可以访问该函数?

[DllImport("name.dll")]
public static extern int dllfunction(??);

我试过了

[DllImport("name.dll")]
public static extern int dllfunction(
    IntPtr fptr,
    [In] ref char filename, 
    ref int status);

查看 MSDN 还没有帮助。如果您能够给出答复,您是否介意也提供一个调用示例(即如果需要强制转换)。

感谢收看!

降压

【问题讨论】:

    标签: c dll pinvoke marshalling dllimport


    【解决方案1】:

    这是发布的少量信息的最佳猜测:

    [DllImport("name.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern int dllfunction(
        out IntPtr fptr, 
        string filename, 
        ref int status
    );
    

    【讨论】:

    • 谢谢!那工作得很好。您认为还有哪些其他信息可能会有所帮助,以便我下次考虑?再次感谢。
    • 描述函数的作用。声明中的 out 和 ref 是猜测。
    • 知道了 - 谢谢。如果需要,我可以在以后的帖子中更具体。
    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    相关资源
    最近更新 更多