complie dll for C invocation with GCC

来源:互联网 发布:织梦pc 手机端同步插件 编辑:程序博客网 时间:2024/05/17 01:29

from:http://blog.sina.com.cn/s/blog_4b02b8d001000avi.html

我们通过实例来学习使用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  
#define EXPORT __declspec(dllexport) 
#else  
#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!
原创粉丝点击