V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
freejishu
V2EX  ›  C

如何在 VB(VS)中声明易语言所谓的公开(stdcall)

  •  
  •   freejishu · 2015-05-13 20:48:09 +08:00 · 1376 次点击
    这是一个创建于 3512 天前的主题,其中的信息可能已经有所发展或是发生改变。

    易语言真的很坑...我承认。
    但是今天还是不得不求助一下了...要用VB开发一个DLL供易语言调用,易语言那边的要求是函数必须 [公开] ,然而在VB里声明了Public Function也无法被调用。我刚刚在网上找到一个C的例子,是这么说的:

    __stdcall __declspec(dllexport) int eventPrivateMsg(int subtype, int sendTime, long long fromQQ, char* message, int font)

    [这里 stdcall 说明 eventPrivateMsg 的调用调用约定为 stdcall,declspec(dllexport) 起到e语言中 “公开” 的作用]
    [一开始因为没有加__stdcall 虽然可以编译通过载入成功,但真运行起来就各种报错……]

    万能的V友,求问在VB内是如何声明这种 stdcall 和 declspec(dllexport) ,目前在努力的看MSDN但是并没有找到答案....所以拜托了~

    分区可能有误,因为并没有找到VB或者EL的选项。

    10 条回复    2015-05-22 18:38:33 +08:00
    Septembers
        1
    Septembers  
       2015-05-13 21:55:59 +08:00 via Android
    首先声明:我只提供思路,可能存在误导

    可以尝试导出COM给易语言用

    VB我印象里无法导出 导出函数(你看看导出函数表
    yksoft1
        2
    yksoft1  
       2015-05-13 22:22:02 +08:00
    C程序理论上应当通过链接器的.def文件进行导出,__declspec(dllexport) 都只是一个hack
    Athrob
        3
    Athrob  
       2015-05-13 23:24:19 +08:00
    如何在 VB(VS)中声明易语言所谓的公开(stdcall)
    这标题...
    VB后面括号一个VS是什么意思? VB是种语言, VS只是个开发工具.
    什么叫易语言所谓的公开, 题主对易语言有偏见吧, 任何语言都有存在的理由.
    而且公开后面括起来个stdcall是什么意思?stdcall是一种调用方式, 跟公开/非公开没关系

    回正题:
    虽然我不知道怎么解决, 但是给你搜索到了相关的资料, 可以参考: http://blog.csdn.net/collin1211/article/details/2803602
    没错, 我就是用百度搜索的...
    oott123
        4
    oott123  
       2015-05-13 23:31:32 +08:00
    嗯?酷 Q?
    tao1991123
        5
    tao1991123  
       2015-05-13 23:43:59 +08:00
    还好这里不是知乎和OSCHINA 不然你会被喷死的
    rtyurtyu
        6
    rtyurtyu  
       2015-05-14 00:29:41 +08:00
    2015年的今天还有用这种废品语言的人?

    vb无法编写一般DLL,只能写COM DLL,所以你就不用想啥自行车了
    freejishu
        7
    freejishu  
    OP
       2015-05-14 00:36:57 +08:00 via Android
    @Septembers
    @rtyurtyu
    @yksoft1 应该说vb这方面觉得还是欠缺……虽然同样看到了帖子,MSDN快翻烂了也没找到官方方法,只能试着做了

    @tao1991123 _(:з」∠)_谢谢容忍我这种小白……


    @oott123 和他的调用程式基本一致 这个话是摘自那里的

    顺我还是吧帖子结了吧,目前没找到官方方法,对于其他的抱试试看的态度了
    易语言我也不吐槽了,和vb一比都差远了,所以才有这种转换梗

    还是谢谢各位了_(:з」∠)_
    hx1997
        8
    hx1997  
       2015-05-14 07:01:17 +08:00 via Android
    VB.NET 还是 VB6?VB6 的话是有办法的,VB.NET 不清楚。
    yangff
        9
    yangff  
       2015-05-14 07:28:34 +08:00 via Android
    改编译指令就可以了。。前面说不行的真的用过vb6?
    顺便,嫌麻烦用powerbasic咯
    freejishu
        10
    freejishu  
    OP
       2015-05-22 18:38:33 +08:00
    看了文章说很多都能通过一些冷门方法实现——虽然目前没有一个能实现了的,但是真的。。。(啪
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   992 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:30 · PVG 04:30 · LAX 12:30 · JFK 15:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.