• 7843阅读
  • 11回复

vs2008不能添加对APlayer.Dll的引用,奈何? [复制链接]

上一主题 下一主题
离线lianghongcq
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2018-05-08
如题:
我在VS2008下,用winForm  ,没 有mfc ,请给一个VC++ 或VB的解决办法与例子都行?
离线aplayer

只看该作者 沙发  发表于: 2018-05-09
VC++的例子在 APlayerSDK 的 samples 下面就有个叫 simpleplayer 的工程。
离线lianghongcq

只看该作者 板凳  发表于: 2018-09-04
simpleplaye例子 看了一个月了,我想用vs2008 c++创建一个winodws form窗体,再向窗体以从文件加载的方式,加载APlayer.Dll的aplayer对象到Form1中,遇到问题如图, simpleplaye例子是用windows api加载的主窗体,我习惯于用windows窗体 ,附我的原码。或请给一个向(windows应用窗体)Form1中由文件加载APlayer.Dll的例子,谢谢!


离线lianghongcq

只看该作者 地板  发表于: 2018-09-04
另外,我在两台不同的win10(64位),vs2008中以install.bat注册Aplayer控件均不成功,在此情况下我运行本网下 的两个C++例子没有问题,我知道这是从文件中加载Aplayer.dll,所以在自己的C++代码中也想用从文件中加载 ,现在想知道各位谁有在win10(64位)+vs2008 C++环境下,有成功注册Aplayer.dll的人吗?我注册不成功跟我是64位的win10有关吗?
所以我想用从aplayer.dll文件中加载aplayer控件对象()

下面是遇到的vs2008 c++下的错误代码:
错误    1    error LNK2020: 无法解析的标记(0A00022E) "wchar_t * g_szAppPath" (?g_szAppPath@@3PA_WA)    MyPlayer.obj    APlayerTest01
错误    2    error LNK2001: 无法解析的外部符号 "wchar_t * g_szAppPath" (?g_szAppPath@@3PA_WA)    MyPlayer.obj    APlayerTest01
错误    3    fatal error LNK1120: 2 个无法解析的外部命令    D:\vbgood\MyC++Projects\VC++2008V\APlayerTest01\Debug\APlayerTest01.exe    APlayerTest01
离线aplayer

只看该作者 4楼 发表于: 2018-09-05
回 lianghongcq 的帖子
lianghongcq:simpleplaye例子 看了一个月了,我想用vs2008 c++创建一个winodws form窗体,再向窗体以从文件加载的方式,加载APlayer.Dll的aplayer对象到Form1中,遇到问题如图, simpleplaye例子是用windows api加载的主窗体, .. (2018-09-04 14:31)

创建方法还是一样,其实只需要你的 Windows 窗体提供一个窗口句柄 HWND 就可以,这个HWND作为ATLAXWIN_CLASS类的父窗口,其他代码就和simpleplayer一样了。
另外,注册失败是因为你没有用管理员权限去运行控制台,你可以先用管理员运行 cmd.exe 然后手工输入 regsvr32  APlayer.dll的全路径, 然后回车即可,当然如果你从文件中创建,那么就不需要注册。
离线aplayer

只看该作者 5楼 发表于: 2018-09-05
回 lianghongcq 的帖子
lianghongcq:另外,我在两台不同的win10(64位),vs2008中以install.bat注册Aplayer控件均不成功,在此情况下我运行本网下 的两个C++例子没有问题,我知道这是从文件中加载Aplayer.dll,所以在自己的C++代码中也想用 .. (2018-09-04 15:21)

g_szAppPath 就是你的 EXE 所在目录,APlayer.dll 就放在这个目录中,自己定义一个TCHAR [256] 类型的变量,填写好就可以了。
离线lianghongcq

只看该作者 6楼 发表于: 2018-09-07


感谢管理员APlayer,按照APlayer的方法注册了APlayer.dll ,在VB.net的代码中生成 APlayer3Lib.Player 对象不再出错了,但是调用APlayer3Lib.Player对象播放视频文件异常,播放画面的APlaye对象看不到,我以  mAPlayer.GetConfig(20%) 想取得播放窗口的句柄,返回是0.  

运行码前没有错误代码,但有一条警告   “Problem isolating COM reference 'APlayer3Lib': Registry key 'HKEY_CLASSES_ROOT\CLSID\{a9332148-c691-4b9d-91fc-b9c461dbe9dd}\MiscStatus' was not imported.”
我在在VB.net中引用APlayer3Lib.Player的代码没报错:Public WithEvents mAPlayer As APlayer3Lib.Player
调用过程如下图:




离线aplayer

只看该作者 7楼 发表于: 2018-09-07
不是 mAPlayer.GetConfig(20%) , 而是  mAPlayer.GetConfig(20), 没有那个 “%” 号
离线lianghongcq

只看该作者 8楼 发表于: 2018-09-08
@APlayer管理员:
vb.net中 ”mAPlayer.GetConfig(20%)“ 与“”mAPlayer.GetConfig(20)“效果是一样的,,,"20%"表示的是20的Integer型,我修改成"mAPlayer.GetConfig(20)"试了,还是返回”0“,昨天vb.net的调用过程未发出来:
   Public Function DoTVPlay_ByAPlayer(ByVal OwnerHwnd As System.Object, ByVal FileName As String) As Integer
        If mAPlayer IsNot Nothing Then
            mAPlayer.Close()
            mAPlayer = Nothing
        End If

        Dim picRQMovie2 As PictureBox = OwnerHwnd
        mAPlayer = New APlayer3Lib.Player       '编译目标平台 必需设置成X86 ,代表32位, 否则这句出错, 不能成功建立对象
        mAPlayer.Open(FileName)

        Dim hwdAPlayer As Int32 = (-1)
        Dim pstrResult As String = "", intResult As Int32 = 0
        intResult = mAPlayer.GetVideoWidth()

        'Debug.Print(picRQMovie2.Handle.ToString)
        'intResult = mAPlayer.SetConfig(20, picRQMovie2.Handle.ToString)

        pstrResult = mAPlayer.GetConfig(20)
        hwdAPlayer = CType(pstrResult, Integer)   'get  Video WINDOW handle

        'mAPlayer.SetPosition(picRQMovie2.Handle.ToInt32)   //设置播放节目位置:播放时间点!,而不是播放窗口的位置
        'mAPlayer.SetPosition(0)
        mAPlayer.Play()
        'System.Threading.Thread.Sleep(360)
        Debug.Print(mAPlayer.GetState.ToString)

    End Function
离线aplayer

只看该作者 9楼 发表于: 2018-09-10
回 lianghongcq 的帖子
lianghongcq:@APlayer管理员:
vb.net中 ”mAPlayer.GetConfig(20%)“ 与“”mAPlayer.GetConfig(20)“效果是一样的,,,"20%"表示的是20的Integer型,我修改成"mAPlayer.GetConfig(20)"试了,还是返回”0“,昨天vb.net .. (2018-09-08 12:37) 

APlayer 是一个 ActiveX 控件,但你这里只 new 了一个对象,可能是不行的,不知道你的 VB 能否创建一个 ActiveX 控件?如若不可以,那么你可以通过 APlayerCaller.dll 这个 DLL来调用 APlayer,它是一个普通的 Windows DLL,可以传入 HWND 创建 APlayer。
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个