codeblocks中创建和调用静态链接库请参考:http://blog.****.net/kld1412/article/details/51628197
一、创建C语言动态链接库
1.建立。
File->New->Projects->Dynamic Link library->Go
给项目命名为:Dynamic_library
删除项目中的main.cpp和main.h重新添加一个simple.c和simple.h
修改simple.h中的代码为:
#ifndef SIMPLE_H_INCLUDED
#define SIMPLE_H_INCLUDED
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif // __cplusplus
#include <windows.h>
EXPORT int pow2(int a);
EXPORT void upstr(char *str, char *s);
#endif // SIMPLE_H_INCLUDED
修改simple.c中的代码为:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "simple.h"
int pow2(int a)
{
return a*a;
}
void upstr(char *str, char *s)
{
int i;
for(i = 0; i < strlen(str); i++)
{
if(str[i] >= 'a' && str[i] <= 'z')
s[i] = str[i] - 'a' + 'A';
else
s[i] = str[i];
}
s[i] = '\0';
}
2.编译(Build)。
编译完成后找到该project的的目录文件,打开Dynamic library/bin/Debug 这时可以看到生成的libDynamic library.a 、 Dynamic library.dll 、libDynamic library.def文件。
二、调用动态链接库
1.创建Console application项目
File->New->Projects->Console application -> …,->finish
给项目命名为:dllTest
在工程中添加“simple.h”,并把上面simple.h中的代码复制到现在这个simple.h中。
修改main.c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "simple.h"
int pow2(int a)
{
return a*a;
}
void upstr(char *str, char *s)
{
int i;
for(i = 0; i < strlen(str); i++)
{
if(str[i] >= 'a' && str[i] <= 'z')
s[i] = str[i] - 'a' + 'A';
else
s[i] = str[i];
}
s[i] = '\0';
}
2. 添加libDynamic library.a库文件
通常, Codeblocks并不知道库文件被使用和它的位置,我们必须声明库文件,让它在链接的时候不会出错。
选择菜单Project-> Build Options… ->Linker settings->Add 添加libDynamic library.a库文件。
除此之外,还需要把编译生成的Dynamic library.dll文件复制到该project的Bin/Debug目录下,(即复制到:Dynamic library/bin/Debug目录下)。
3.3.编译运行
添加完成后就可以编译运行了,运行结果如下:
注意:dll与lib的调用有一些差异。对于dll的调用,一定要注意满足:
在测试程序的工程中要加入DLL输入库。(即.a库文件)
在测试程序中包含DLL头文件。(#include “.h”)
在适当的目录中放置DLL库。(博客中放置在与工程的.exe文件同目录下)