Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:3026回复:26

VC中怎么使用VB的函数

楼主#
更多 发布于:2002-07-17 17:30
VC中怎么使用VB的函数
能否提供一点思路
谢谢
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-07-17 18:09
什么呀?
用VB写的dll?
还是VB的api?
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-17 19:07
我在DirectX SDK中发现了一个很好的、但用VB编的例子
我想把用VB函数编的功能用在VC的工程中
不知VB是否支持dll,如支持的话,该怎样处理?
如不支持的话,能否用ActivcX什么的解决一下?
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-17 19:09
我对VB不是很熟...
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-07-18 09:21
用户被禁言,该主题自动屏蔽!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2002-07-18 09:32
对呀,用VC重新写。
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-18 11:20
我也想用VC写,可下面这段代码...
Dim objSmartRenderEngine As New SmartRenderEngine
Public Sub AddFileWriterAndMux(objFilterGraphManager As FilgraphManager, bstrFileName As String)
      Dim objFilterInfo As IFilterInfo
      Dim objRegisteredFilters As Object
      Dim objAVIMuxFilterInfo As IFilterInfo
      Dim objRegFilterInfo As IRegFilterInfo
      Dim objFileSinkFilterVB As IFileSinkFilterForVB
      On Local Error GoTo ErrLine
            
      \'derive a collection of registered filters from the filtergraph manager
      Set objRegisteredFilters = objFilterGraphManager.RegFilterCollection
            
      \'enumerate through the registered filters
      For Each objRegFilterInfo In objRegisteredFilters
          If Trim(LCase(objRegFilterInfo.Name)) = \"file writer\" Then
              objRegFilterInfo.Filter objFilterInfo
          ElseIf Trim(LCase(objRegFilterInfo.Name)) = \"avi mux\" Then
              objRegFilterInfo.Filter objAVIMuxFilterInfo
          End If
      Next
            
      \'derive the file sink filter tailored for vb
          Set objFileSinkFilterVB = objFilterInfo.Filter
       \'assign the filename to the sink filter
          Call objFileSinkFilterVB.SetFileName(bstrFileName, Nothing)
...
            
我有几个问题:
1.用VC重写是否可以直接将VB代码替换成VC(如赋值、函数调用等)
2.如有只在VB中定义的Object怎么办
  如IFileSinkFilterForVB
3.Set objRegisteredFilters = objFilterGraphManager.RegFilterCollection
  For Each objRegFilterInfo In objRegisteredFilters
  VC该怎么写
谢谢做答
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-07-18 11:26
DX SDK有for VC的呀。用。
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-18 11:43
这个例子叫TrimmerVB
独独他找不到VC的例子
真TMD的微软
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-18 11:45
arthurtu兄,帮帮忙吧!
aiherong
驱动牛犊
驱动牛犊
  • 注册日期2002-06-07
  • 最后登录2007-01-10
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-07-18 15:16
我也想用VC写,可下面这段代码...
Dim objSmartRenderEngine As New SmartRenderEngine
Public Sub AddFileWriterAndMux(objFilterGraphManager As FilgraphManager, bstrFileName As String)
      Dim objFilterInfo As IFilterInfo
      Dim objRegisteredFilters As Object
      Dim objAVIMuxFilterInfo As IFilterInfo
      Dim objRegFilterInfo As IRegFilterInfo
      Dim objFileSinkFilterVB As IFileSinkFilterForVB
      On Local Error GoTo ErrLine
            
      \'derive a collection of registered filters from the filtergraph manager
      Set objRegisteredFilters = objFilterGraphManager.RegFilterCollection
            
      \'enumerate through the registered filters
      For Each objRegFilterInfo In objRegisteredFilters
          If Trim(LCase(objRegFilterInfo.Name)) = \"file writer\" Then
              objRegFilterInfo.Filter objFilterInfo
          ElseIf Trim(LCase(objRegFilterInfo.Name)) = \"avi mux\" Then
              objRegFilterInfo.Filter objAVIMuxFilterInfo
          End If
      Next
            
      \'derive the file sink filter tailored for vb
          Set objFileSinkFilterVB = objFilterInfo.Filter
       \'assign the filename to the sink filter
          Call objFileSinkFilterVB.SetFileName(bstrFileName, Nothing)
...
            
我有几个问题:
1.用VC重写是否可以直接将VB代码替换成VC(如赋值、函数调用等)
2.如有只在VB中定义的Object怎么办
  如IFileSinkFilterForVB
3.Set objRegisteredFilters = objFilterGraphManager.RegFilterCollection
  For Each objRegFilterInfo In objRegisteredFilters
  VC该怎么写
谢谢做答
 

一般来说,VC代码更容易转换成VB代码,只要处理好数据类型,
近似一一对应;
但是,由于VB语言对基本的API函数进行封装,所以在逆向转换时
难度较前者大,你得了解它有没有从一大堆DLL中引用外部函数,
如果是这样,转换VC时也必须调用相应的DLL才行。
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-07-18 16:36
问个很菜的问题
怎么知道VB使用了哪些dll,他的定义方式不同于VC
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2002-07-18 18:19
看declare function/sub这样的语句。
没有for VC的,我也没有办法了。 :(
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-07-18 18:45
如果很难用VC编写,就只有用VB编了
不知VB的Active dll能否象dll在VC中使用?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2002-07-19 09:27
应该可以吧。 :D
skysky
驱动小牛
驱动小牛
  • 注册日期2001-07-18
  • 最后登录2003-06-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-07-19 09:47
可以快速生成一个VB的COM组件,导出接口,然后可以在VC中调用。
以德服人,以德服人
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-07-19 14:12
VB生成的dll只有dll文件、lib文件
在VC中怎么调用啊?
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-07-19 14:15
我LoadLibarary后
再用GetProcAddress
得不到函数的地址
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-07-19 16:17
例子如下:
typedef VOID (*VTPROC)(LPTSTR);
void MyProc()
{
HINSTANCE hinstLib;
VTPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
 
    // Get a handle to the DLL module.
    hinstLib = LoadLibrary(\"VideoTrimmerProj\");
    if (hinstLib != NULL)
    {
        ProcAdd = (VTPROC)GetProcAddress(hinstLib, \"VBFunc\");
        if (fRunTimeLinkSuccess = (ProcAdd != NULL))
            (ProcAdd) (\"message via DLL function\\n\");
        fFreeResult = FreeLibrary(hinstLib);
    }
    if (! fRunTimeLinkSuccess)
        printf(\"message via alternative method\\n\");
}
ProcAdd的值总是NULL
aiherong
驱动牛犊
驱动牛犊
  • 注册日期2002-06-07
  • 最后登录2007-01-10
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-07-19 16:27
VC好比心旷神怡的原始森林,有清晰的本质面目,
VB则象一座盖好的房子,问你它用什么材料建成的,难!
上一页
游客

返回顶部