zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    234树(2)实现
    矩阵的坐标变换(转)
    OpenGL 学习笔记(3)绘制几何物体
    OpenGL 学习笔记(1)初始化窗体
    OpenGL学习笔记(5)3D基本概念
    矩阵的三维变换(转)
    OpenGL 学习笔记(2)创建第一个图形
    234树(1)概念
    OpenGL 学习笔记(4)顶点数组
    OpenGL学习笔记(6)第一个动画
  • 原文地址:https://www.cnblogs.com/yunhaisoft/p/1239687.html
Copyright © 2011-2022 走看看