查看完整版本: [-- C#调用APlayerCaller完成API创建,问题求助! --]

APlayer 开发者论坛 -> APlayer 讨论区 -> C#调用APlayerCaller完成API创建,问题求助! [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

晨曦 2015-03-21 00:09

C#调用APlayerCaller完成API创建,问题求助!

APlayerCaller.dll创建基本已写,创建依然失败。请求帮助。
出错图:
[attachment=432]


// button1 事件是创建
// 事件写在按钮下后才发现,只要创建后就会程序意外结束!
  1. //Form1.cs 部分代码
    public delegate void fun3(int l1, int l2, int l3);//声明委托



           private void button1_Click(object sender, EventArgs e)
            {
               // new 方法并取地址,以下方同。
                fun3 DOnMessage = new fun3(OnMessage);
                POnMessage = Marshal.GetFunctionPointerForDelegate(DOnMessage);
                fun2 DOnStateChanged = new fun2(OnStateChanged);
                POnStateChanged = Marshal.GetFunctionPointerForDelegate(DOnStateChanged);
                fun0 DOnOpenSuccess = new fun0(OnOpenSuccess);
                POnOpenSuccess = Marshal.GetFunctionPointerForDelegate(DOnOpenSuccess);
                fun1 DOnSeekCompleted = new fun1(OnSeekCompleted);
                POnSeekCompleted = Marshal.GetFunctionPointerForDelegate(DOnSeekCompleted);
                fun1 DOnBuffer = new fun1(OnBuffer);
                POnBuffer = Marshal.GetFunctionPointerForDelegate(DOnBuffer);
                fun0 DOnVideoSizeChanged = new fun0(OnVideoSizeChanged);
                POnVideoSizeChanged = Marshal.GetFunctionPointerForDelegate(DOnVideoSizeChanged);
                funs1 DOnDownloadCodec = new funs1(OnDownloadCodec);
                POnDownloadCodec = Marshal.GetFunctionPointerForDelegate(DOnDownloadCodec);
                fun2 DOnEvent = new fun2(OnEvent);
                POnEvent = Marshal.GetFunctionPointerForDelegate(DOnEvent);
                


                //创建代码
                HAplayer = APlayer.APlayer.CreateAPlayer(panel1.Handle.ToInt32(), 50, 50, 200, 200, (long)POnMessage, (long)POnStateChanged, (long)POnOpenSuccess, (long)POnSeekCompleted, (long)POnBuffer, (long)POnVideoSizeChanged, (long)POnDownloadCodec, (long)POnEvent);      
                MessageBox.Show("句柄是:" + HAplayer.ToString());
                //APlayer.APlayer.open(HAplayer, "F:\\视频\\C体.BD1280超清国英双语特效中英双字.mp4");
            }


    //回调方法

    void OnMessage(int l1, int l2, int l3)
            {
                  //方法体
            }
  1. // Aplayer.cs 部分代码
    using System;
    using System.Text;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    namespace APlayer
    {
        public abstract class APlayer
        {

            [DllImportAttribute("APlayerCaller.dll", EntryPoint = "APlayer_Create")]
            public static extern int CreateAPlayer
            (
                long hParent,
                long x,
                long y,
                long nWidth,
                long nHeight,
                long OnMessage,
                long OnStateChanged,
                long OnOpenSuccess,
                long OnSeekCompleted,
                long OnBuffer,
                long OnVideoSizeChanged,
                long ondownloadcodec,
                long OnEvent
            );
        }
    }

// Debug主程序目录已经放置文件
[attachment=433]

// 求助解决,实在头疼。






晨曦 2015-03-21 00:13
出错图:
[attachment=425] 图片补上
[attachment=429]
// Debug主程序目录已经放置文件
[attachment=426] 图片补上
[attachment=431]

本机已用易语言测试过,C#嵌入COM组件(aplayer控件)都一切正常。求助!
等待回复...


xushen 2015-03-22 15:08
是很难啊。。。。。。。。。。。。。。。。。。。。。。。

aplayer 2015-03-23 13:01
对照 APlayerCaller.dll 的源代码(论坛有下),检查各个事件响应函数参数的数目和数据类型是否有不一致的,很有可能是这个问题导致的崩溃。


查看完整版本: [-- C#调用APlayerCaller完成API创建,问题求助! --] [-- top --]


Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.034489 second(s),query:0 Gzip enabled