COM 导出结构体,DLL 导出结构体

COM导出结构体:


在COM中定义结构体,继承一个接口

 class Data : IData

{

      添加成员变量

实现接口方法SET GET

}


对于使用者来说只能看到接口, 实例化接口后,这个接口就是结构体的接口

IcwPolyLinePtr pContourLine = NULL;
CoCreateInstance(__uuidof(cwPolyLine),NULL,CLSCTX_INPROC_SERVER,__uuidof(IcwPolyLine),(void**)&pContourLine);



DLL 导出结构体:

1、 我们可以直接在 class之前 添加 ____declspec(dllexport) 来导出整个类

2、 

class Data : IData

{

      添加成员变量

实现接口方法SET GET

}

导出一个工厂方法

____declspec(dllexport) IData GetInstance();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将C语言结构体导出dll并调用,可以通过以下步骤实现: 1. 定义需要导出结构体以及结构体成员变量和函数。 例如,我们定义一个包含两个成员变量的结构体Person,并在结构体中定义了一个函数PrintPerson,如下所示: ```c // 定义结构体 typedef struct _tagPerson { char name[32]; int age; } Person; // 定义结构体中的函数 void PrintPerson(Person p) { printf("name: %s, age: %d\n", p.name, p.age); } ``` 2. 将结构体和函数导出为动态链接库(dll)。 在Windows系统中,可以使用Visual Studio等IDE工具创建项目,并将代码编译成动态链接库文件(.dll)。在导出函数时需要使用__declspec(dllexport)关键字,例如: ```c __declspec(dllexport) void PrintPerson(Person p) { printf("name: %s, age: %d\n", p.name, p.age); } ``` 3. 在需要调用该结构体和函数的程序中,使用LoadLibrary和GetProcAddress函数加载和获取dll中的函数指针。 例如,我们在另一个C程序中需要调用PrintPerson函数,可以按照以下步骤实现: ```c #include <windows.h> #include <stdio.h> typedef struct _tagPerson { char name[32]; int age; } Person; typedef void (*PrintPersonFunc)(Person); int main() { HMODULE hModule = LoadLibrary("person.dll"); // 加载dll文件 if (hModule == NULL) { printf("Failed to load dll.\n"); return 1; } PrintPersonFunc pPrintFunc = (PrintPersonFunc)GetProcAddress(hModule, "PrintPerson"); // 获取导出函数指针 if (pPrintFunc == NULL) { printf("Failed to get function pointer.\n"); return 1; } Person p = {"Tom", 20}; pPrintFunc(p); // 调用导出函数 FreeLibrary(hModule); // 释放dll文件 return 0; } ``` 在上面的代码中,我们使用LoadLibrary函数加载dll文件,使用GetProcAddress函数获取导出函数指针,并调用导出函数。注意,在调用完毕后需要使用FreeLibrary函数释放dll文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值