关于c语言创建dll文件及dll文件的调用
近来又有人在群里问如何用c语言编制dll文件(动态链接库)。
原来没有对这个问题太在意过,也没有尝试过任何解决方案,毕竟原来我是用vb的(现在用.net),做个dll只不过是点选一下建立activeX dll工程的图标而已。今天在网上与朋友聊天,看了他指给我的几个几个文件,用MingW将C程序编译成dll文件的例子,我恍然大悟,原来讲C程序编译成dll文件只不过是在要公开的接口函数声明前面加上几个特定的修饰符而已。于是用dev-cpp建了个dll的默认文档,一切都很明了。(我把源代码贴在下面)
/*dll.h文件*/
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
DLLIMPORT void HelloWorld (void);
#endif /* _DLL_H_ */
/*dllmain.c文件*/
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
DLLIMPORT void HelloWorld ()
{
MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
相关文档:
C/C++返回内部静态成员的陷阱
陈皓
背景
在我们用
C/C++开发的过程中,总是有一个问题会给我们带来苦恼。这个问题就是函数内和函数外代码需要通过一块内存来交互(比如,函数返回字符串),这个问题困
扰和很多开发人员。如果你的内存是在函数内栈上分配的,那么这个内存会随着函数的返回而被弹栈释放,所以,你 ......
C语言必知必会
指针:
1.指针声明后要赋值!否则是空指针,可不知道指向了哪里
例如:
void swap(int *a,int *b){
int *tmp;
*tmp=*a;
*a=*b;
*b=*tmp;
}
本来是想利用上面的swap函数实现两个数的互换,但是*tep=*a;这句话是有误的 ......
本文触及到Socket TCP/IP编程方面的知识,其实这是很简单的内容,大家看不明的地方大可以先往下读,以后再看一遍,可能会觉得很简单。
很多人写网站用惯了IIS和Tomcat这些高级的后台来做网站后台服务,然而,在这些后台还没有问世之前,人们是怎么编写网站的呢?他们底层共同遵守的准则和标准又是什么呢?
这就是ht ......
最近在做samsung
s3c2416
在linux下的spi驱动程序,测试了下samsung发布的spi的内核源代码,无论是采用dma或者非dma模式都无法工作。阅读该驱动代码,发现
这码应该是一个未完成的版本,存在很多的bug。于是在这个版本的基础上进行修改,重写一个可用的、支持全双工的通讯 ......