【问题标题】:calling DLL method from WinDev从 WinDev 调用 DLL 方法
【发布时间】:2017-04-11 10:52:31
【问题描述】:

我想在 WinDev 应用程序中使用一个 DLL(用 C++ 开发),我的 DLL 可以在 C# 代码中正常工作,我可以在那里调用任何方法,但是使用 Windev 我可以成功地加载 DLL:

hInst = LoadDLL("MyDLL.DLL")

但是当我想以这种方式调用方法时:

CallDLL32("MyDLL", "GetCode", data, res1, res2)

我收到一个错误“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”

我想调用的方法签名是这样的:

string GetCode([IN] byte[] Data, [OUT] string res1, [OUT] string res2)

【问题讨论】:

  • 问题已解决:我使用了来自windev的汇编器.net,需要将字符串数组转换为字节数组sMyString is string = "votre chaine de caractère" nDimension is int = Length(sMyString) tabByteArray is array of nDimension 1-byte int K is int FOR K = 1 TO nDimension tabArray[K] = ASC(Middle(sMyString, K, 1)) END

标签: c# c++ dll import windev


【解决方案1】:

法语中的post 建议您在字符串前面加上 &,因为它需要通过引用传递,它可能看起来像:

CallDLL32("MyDLL", "GetCode", &data, &res1, &res2)

虽然我不知道它如何处理字节数组。

【讨论】:

    【解决方案2】:

    可以直接调用:API函数

    API("USER32", "SendMessageA", hWnd, wMsg, lParam1, lParam2)
    

    文档:https://doc.windev.com/en-US/?3014005

    【讨论】:

    • 我不知道谁给了我-1,为什么?如果我的解决方案是错误的......他可以告诉我错误。这是一个经过测试的解决方案,带有文档链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2010-12-05
    相关资源
    最近更新 更多