使用gcc编译出dll文件的方法
2008-07-02 11:07
495 查看
我们通过实例来学习使用gcc编译出dll文件的方法,看下面的例子说明这个过程,共有三个文件:hello.c、dll.h和dll.c。
hello.c 文件内容如下
#include <stdio.h>
#include "dll.h"
int main()
{
hello();
return 0;
}
其中,hello()函数是动态连接库提供的函数。
dll.h 文件内容如下
#ifdef BUILD_DLL /* DLL export */
#define EXPORT __declspec(dllexport)
#else /* EXE import */
#define EXPORT __declspec(dllimport)
#endif
EXPORT void hello(void);
dll.c 文件内容如下
#include "dll.h"
EXPORT void hello(void)
{
printf ("Hello/n");
}
三个文件的内容都很简单,无须解释。
编译连接程序
1、编译hello.c
gcc -c hello.c
2、编译dll.c
gcc -c -DBUILD_DLL dll.c
注意要使用要使用-DBUILD_DLL来设置宏BUILD_DLL
3、创建dll
gcc -shared -o message.dll dll.o -Wl,--out-implib,libmessage.a
这一步要详细说明一下
-shared参数用来创建共享库,在windows中为dll
-Wl 等待下一条信息进行连接
--out-implib是给连接程序ld使用的,用于创建要连接dll需要的import library
4、创建可执行文件
gcc -o hello.exe hello.o -L./ -lmessage
-L 指定连接库路径
-lmessage (or -l message) 指定dll的import library
好了,编译连接完成,运行程序
C:/>hello
Hello!
hello.c 文件内容如下
#include <stdio.h>
#include "dll.h"
int main()
{
hello();
return 0;
}
其中,hello()函数是动态连接库提供的函数。
dll.h 文件内容如下
#ifdef BUILD_DLL /* DLL export */
#define EXPORT __declspec(dllexport)
#else /* EXE import */
#define EXPORT __declspec(dllimport)
#endif
EXPORT void hello(void);
dll.c 文件内容如下
#include "dll.h"
EXPORT void hello(void)
{
printf ("Hello/n");
}
三个文件的内容都很简单,无须解释。
编译连接程序
1、编译hello.c
gcc -c hello.c
2、编译dll.c
gcc -c -DBUILD_DLL dll.c
注意要使用要使用-DBUILD_DLL来设置宏BUILD_DLL
3、创建dll
gcc -shared -o message.dll dll.o -Wl,--out-implib,libmessage.a
这一步要详细说明一下
-shared参数用来创建共享库,在windows中为dll
-Wl 等待下一条信息进行连接
--out-implib是给连接程序ld使用的,用于创建要连接dll需要的import library
4、创建可执行文件
gcc -o hello.exe hello.o -L./ -lmessage
-L 指定连接库路径
-lmessage (or -l message) 指定dll的import library
好了,编译连接完成,运行程序
C:/>hello
Hello!
相关文章推荐
- linux下用gcc编译使用了math库函数的程序出错的解决方法
- g++/gcc编译使用方法参考
- 关于使用Makefile进行GCC编译报错问题解决方法
- Linux平台下关于GCC编译及使用的方法
- GCC编译使用方法
- GCC 编译使用动态链接库和静态链接库的方法
- GCC 编译使用动态链接库和静态链接库的方法
- GCC 编译使用动态链接库和静态链接库的方法
- arm-linux-gcc-4.4.3交叉编译google的protobuf。以及使用方法
- AVRGCC/WinAVR编译环境中断函数的使用方法【转】
- linux下用gcc编译使用了math库函数的程序出错的解决方法
- Linux系统平台下关于GCC编译及使用的方法 (-Werror,它要求GCC将所有的警告当成错误进行处理
- linux下gcc编译多个源文件、gdb的使用方法
- Linux下使用gcc编译程序找不到库的分析和解决方法
- AVRGCC/WinAVR编译环境中断函数的使用方法
- 第一次使用Ubuntu的Vim编写C,简单的gcc编译方法
- Linux下使用gcc编译程序找不到库的分析和解决方法
- Linux系统平台下关于GCC编译及使用的方法
- Linux系统平台下关于GCC编译及使用的方法(-Werror,它要求GCC将所有的警告当成错误进行处理 )
- GCC 编译使用动态链接库和静态链接库的方法