首页 > 代码库 > 创建dll
创建dll
在制作dll的时候,如果全局变量不导出,而函数调用中,包含了全局变量,那么会出现全局变量没有值的问题。
add.c
#pragma once//强制无签名utf-8#include "add.h"pStu student;//全局变量int add(int a, int b){ return a + b;}void test1(pStu p){ if (p == NULL){ printf("------1------\n"); } //全局变量怎么处理 if (student == NULL){ printf("------2------\n"); } else{ printf("ok\n"); }}
add.h
#ifndef _ADD#define _ADD#include <stdio.h>#ifdef __cplusplusextern "C" {#endif#ifdef SAMPLEDLL_EXPORTS#define DLL_DECLARATION __declspec(dllexport) #else#define DLL_DECLARATION __declspec(dllimport)#endif#define aMAX(a, b) ((a)>(b) ? (b) : (a)) DLL_DECLARATION int add(int a, int b); DLL_DECLARATION void dis(); int num; typedef struct { int age; char *p; }STU,*pStu; extern pStu DLL_DECLARATION student;//导出全局变量 DLL_DECLARATION void test1(pStu p);#ifdef __cplusplus}#endif#endif
调用:
test.c
#include <stdio.h>#include "add.h"#pragma comment(lib,"makeADll.lib")int func(int n){ printf("%d\n", num); return n;}int main(){ num=add(1, 1); int a = func(num); student = malloc(sizeof(STU)); student->age = 10; test1(student);}
具体参照:http://www.cnblogs.com/lidabo/p/3501358.html
下面导出类,还没有实践。
类:在dll中定义:
在定义的时候用 class _declspec(dllexport) classname{
}
在类中引用的时候用
加入类定义头文件:#include “classname.h”
Class _declspec(dllimport) classname 来导入类
创建dll
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。