当前位置:  编程技术>c/c++/嵌入式

C++生成dll和调用dll的方法实例

    来源: 互联网  发布时间:2014-10-12

    本文导语:  本人根据网络多个相关博客帖子原创 1)生成dll 建立两个文件 xxx.h , xxx.cpp xxx.h内容如下: #ifdef BUILD_XXX_DLL#define EXPORT __declspec(dllexport)#else#define EXPORT __declspec(dllimport)#endif extern "C"{EXPORT void example(void);... ...} xxx.cpp内容如下: #defin...

本人根据网络多个相关博客帖子原创

1)生成dll

建立两个文件 xxx.h , xxx.cpp

xxx.h内容如下:

#ifdef BUILD_XXX_DLL
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __declspec(dllimport)
#endif

extern "C"{
EXPORT void example(void);
... ...
}

xxx.cpp内容如下:

#define BUILD_XXX_DLL
#include "xxx.h"

void example(void)
{
}
... ...

然后从DOS控制台进行编译(假设已经安装mingw并加入环境变量)
g++ -shared -Wl,--kill-at,--output-def,xxx.def -o xxx.dll xxx.cpp

(因为C++通过修饰函数名来实现函数重载,所以我们要用extern "C"配合--kill-at编译选项来避免对函数名的修正,BUILD_XXX_DLL宏的作用是用来选择函数原型声明的作用)

2)静态调用dll

在新文件yyy.cpp里加入如下内容;
#include "xxx.h"
#pragma comment(lib,"xxx.dll")

生成的dll不需要def文件和cpp文件也可以
不包含xxx.h的话,需要把h文件内的函数原型声明添加进yyy.cpp

编译时需要加入dll,类似这样:
g++ -L. -o yyy.exe yyy.cpp xxx.dll

3)动态调用dll

首先,你需要包含windows.h
#include

你还需要一个句柄保存装入的dll文件
HINSTANCE hDll=LoadLibrary("xxx.dll");

声明所需函数的对应函数指针类型
typedef void (*pfunc)(void);

获得指向函数的函数指针
pfunc pf=(pfunc*)GetProcAddress(hDll,"example");

使用完毕后,要释放dll文件
FreeLibrary(hDll);


    
 
 

您可能感兴趣的文章:

  • 请问在C文件中如何引用 C++ 生成库?
  • glade无法生成C++代码
  • 有谁有flex和bison生成C++ parser的例子啊?
  • C++向量图生成库 CreEPS
  • gvim下如何使用已经用Ctags生成好的C++标准库的Tags?
  • c++生成dll使用python调用dll的方法
  • C++代码生成器 xsd2cc
  • windows下使用gVIM,怎么生成C++的tags文件
  • c++ 工程 使用autotools 生成makefile
  • 谁能提供vim下用Ctags生成好的C++标准库的Tags?
  • c++中.dll与.lib文件的生成与使用的详解
  • 不要被C++(自动生成规则)所蒙骗
  • 关于JAVA调用linux命令 生成密钥对的问题
  • Java能调用OLE对象吗?怎样利用Java生成Excel报表?
  • 请问VC生成的控件怎么在JAVA里面调用,就是显示在网页上,里面的方法可以实现?
  • java可以调用windows api吗,用jbuild 可以生成.exe文件吗,散分,高手出招
  • gcc编译生成的 libmynet.so库中的函数没法调用,不知道为什么,好心人帮帮忙啊!!
  • Android调用google地图生成路线图实现代码
  • 简单小问题,指点迷津。不是一个包中类可以不引用随便调用么?我在jb使用中,用自己做的类生成对象,怎么说找不到?
  • C#调用Matlab生成的dll方法的详细说明
  • php调用google接口生成二维码示例
  • JAVA 程序中要调用另一个我本人生成的类文件,此时javac怎么用?
  • php调用google接口生成二维码实例
  • [急切求助]生成和调用.a文件问题。。。
  • linux 下,如何生成一个.o文件,该文件还调用一个.o文件或.a文件,请问该怎么写命令呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • MINGW生成dll,
  • 怎么生成lib或dll
  • qt生成的EXE文件需要它本身的DLL文件才能执行。请问怎么解决
  • 在Linux下使用GCC如何编译生成Windows下使用的DLL?
  • 如何将vc下生成的dll源程序 改造成能够在 linux下编译成 .so文件的源代码? 哪里有这方面的文章?
  • WindowsXP下,QT+Dev-Cpp5,编译生成的exe文件执行时提示需要minGWM10.dll问题
  • linux c下利用srand和rand函数生成随机字符串
  • 用JBuilder能将java程序生成exe可执行文件吗?如何生成?
  • Linux下c基于openssl生成MD5的函数
  • 我想问一下,java生成的.class文件能不能通过某种工具生成.exe文件?
  • c#如何生成Excel(.xls和.xlsx)文件
  • 高分求jsp中动态生成图片的相关资料、生成svg格式和pdf格式的资料,不够再加分
  • linux下利用(cat,strings,head,sed)命令生成随机字符串
  • 如何使用arm-uclibc-gcc将.c文件编译生成.a,将.c文件编译生成.cgi?
  • php中session_id()函数详细介绍,会话id生成过程及session id长度
  • 如何指定用javac编译生成类的存放路径。(最好不要告诉我再生成之后再把文件流重新到出这种)
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • QT Designer生成的代码不能生成可执行程序
  • ORACLE中DBMS_RANDOM随机数生成包
  • 需要从数据库中动态生成的页面是该在SERVLET输出生成,还是应该在JSP编码实现?
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • java生成字母数字组合的随机数示例 java生成随机数
  • 请问我用程序如何编辑Adobe Acrobat 5.0的pdf文件(生成报表)啊?或者如何才能将已生成的execl报表转换成pdf格式?
  • 请问用POI生成Excel文件时,怎么能生成边框线条等?
  • php生成短网址 仿微博短网址生成代码
  • 在JB自己生成的EJB客户端的测试代码中都会自动生成,象String url = "t3://localhost:7001";这样的,请问:
  • java随机生成字符串(字符随机生成类 生成随机字符组合)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3