• VC调用Delphi制作的动态链接库如何互相传递字符串


    1、VC to Delphi

    Delphi源程序:

    library ExportChartData; 

    uses 
      SysUtils, 
      Classes; 

    {$R *.res} 

    const 
      DLL_VER      : Word 
    = $0001

    function GetVer: Word; 
    begin 
      Result :
    = DLL_VER; 
    end

    procedure SayHello(aString:pchar);cdecl; 
    begin 
      
    if aString = 'Hello!' then Beep; 
    end

    exports 
      GetVer, 
      SayHello; 

    begin 
    end.

    VC源程序

    // TestInterface.cpp : Defines the entry point for the console application.
    //

    #include 
    "stdafx.h"
    #include 
    <windows.h>

    int main(int argc, char* argv[])
    {
    char *szDllName = "..\\..\\OBJ\\ExportChartData.dll";
    HINSTANCE hInstance 
    = LoadLibrary(szDllName);

    if (hInstance != NULL)
    {
      
    void (*f)(char &= (void (*)(char &))GetProcAddress(hInstance, "SayHello");
      
    char *= "Hello!";
       f(
    *s);
    }
    FreeLibrary(hInstance);

    return 0;
    }

    2、Delphi to VC

    Delphi源程序

    library ExportChartData; 

    uses 
      SysUtils, 
      Classes; 

    {$R *.res} 

    const 
      DLL_VER      : Word 
    = $0001

    function GetVer: Word; 
    begin 
      Result :
    = DLL_VER; 
    end

    procedure SayHello(index:Integer;aString:pchar);cdecl; 
    begin 
      
    if index = 0 then strcopy(aString,'A Test for Pass String!'
      
    else 
        strcopy(aString,
    'OK!'); 
    end

    exports 
      GetVer, 
      SayHello; 

    begin 
    end

    VC源程序

    // TestInterface.cpp : Defines the entry point for the console application.
    //

    #include 
    "stdafx.h"
    #include 
    <windows.h>
    #include 
    <stdio.h>

    typedef 
    char* PCHAR;

    int main(int argc, char* argv[])
    {
    PCHAR szDllName 
    = "..\\..\\OBJ\\ExportChartData.dll";
    HINSTANCE hInstance 
    = LoadLibrary(szDllName);
    char *= new char[255];

    if (hInstance != NULL)
    {
      
    void (*f)(intchar *= (void (*)(intchar *))GetProcAddress(hInstance, "SayHello");
       f(
    1, s);
       printf(
    "%s",s);
    }
    FreeLibrary(hInstance);
    delete[]s;

    return 0;
    }

  • 相关阅读:
    postman断言作用及怎么使用
    深入理解Spring MVC 思想
    serialVersionUID的作用以及如何用idea自动生成实体类的serialVersionUID
    HttpClient通过Post方式发送Json数据
    HttpClient获取Cookie的两种方式
    HTTPclient cookie的获取与设置
    【BIEE】11_根据显示指标展示不同报表
    【Excle】科学计数法快速还原
    【BIEE】10_资料库查看数据报错
    【BIEE】09_BIEE控制台乱码问题解决
  • 原文地址:https://www.cnblogs.com/yunhaisoft/p/1239687.html
Copyright © 2020-2023  润新知