日期:2014-05-16  浏览次数:20855 次

c#调用pjsip 的 c++ dll ,不传参数的函数正常,但是有参数的时候就报错
pjsip 的 c++ dll ,按照文档里面的参数设置来传递参数,但是,在按照P/invoke 方式进行获取,但是运行的结果是,没有参数的都能正常运行,有参数的却报错,错误是这样的

代码如下

    using System;
    using System.Collections.Generic;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;
    namespace dllTest
    {
    class Program
    {
    /// 
    /// 初始化
    /// 
    /// 
    [DllImport("pjsipDll.dll", CharSet = CharSet.Ansi, SetLastError = true)]
    private static extern int dll_init();
    /// 
    /// 主函数
    /// 
    /// 
    [DllImport("pjsipDll.dll", CharSet = CharSet.Ansi, SetLastError = true)]
    private static extern int dll_main();

    /// <summary>
    /// 
    /// </summary>
    /// <returns></returns>
    [DllImport("pjsipDll.dll", CharSet = CharSet.Ansi, SetLastError = true)]
    private static extern int dll_getNumOfCodecs();
    /// <summary>
    /// 打电话
    /// </summary>
    /// <param name="accountId">用户名</param>
    /// <param name="uri">地址</param>
    /// <returns></returns>
    [DllImport("pjsipDll.dll", EntryPoint = "dll_makeCall")]
    private static extern int dll_makeCall(int accountId, string uri);
    /// <summary>
    /// 回电话
    /// </summary>
    /// <param name="callId"></param>
    /// <param name="code"></param>
    /// <returns></returns>
    [DllImport("pjsipDll.dll", CharSet = CharSet.Ansi, SetLastError = true)]
    private static extern int dll_answerCall(int callId, int code);
    /// <summary>
    /// 
    /// </summary>
    /// <param name="callId"></param>
    /// <returns></returns>
    [DllImport("pjsipDll.dll", EntryPoint = "dll_releaseCall", CharSet = CharSet.Ansi, SetLastError = true)]
    private static extern int dll_releaseCall(int callId);

    static void Main(string[] args)
    {