c语言函数写成dll c语言如何生成dll文件

如何用VC编写dll文件VC编写dll文件
1、VC++-New-Project-Win32 Dynamic_Link Library;
2、选择创建一个空工程;
首先DLL需要一个头文件,所以新建一个C\C++ Header File
这个头文件中必须包含想要输出的变量和函数,头文件必须定义用于输出的任何符号和数据结构 。
例如 :
这里边又一个预定义
#ifdef MYLIBAPI
#else
#define MYLIBAPI extern "C" __declspec(dllimport)
#endif
【c语言函数写成dll c语言如何生成dll文件】为什么要加这一句呢?
因为相同的函数被C++编译后在符号库中的名字与C语言编译后的不同,所以如果使用的是标准C就要告诉编译器,要保留原来的名字,这里用extern “C”来实现 。
当然DLL还需要一个源文件,在工程中新建一个 C++Source File
代码如下,此代码 中的宏定义是必须的 。
编译以后,会在工程的DEBUG文件夹下生成一个DLL文件 。这样DLL文件就创建成功 。
下面展示一下如何使用这个DLL 。代码如下,这里是显示引用DLL 。
运行以后程序就会输出:1+2=3
证明调用动态链接库里的 Add函数成功 。
c语言如何做成.dll的东西?然后用c#做界面调用这个c程序?下边那位太懒了吧,从其他地方copy的都不改一些?
我自己写了一种方法 , 你看看是不是你要的,过程如下:
新建空的解决方案 -- 添加项目--VC++--Win32项目 -- 输入名字点确认 -- 向导里选下一步 -- 将应用程序类型改为Dll,然后点完成就可以了,在你的源文件cpp里写函数就可以了,写法示例:extern "C" __declspec(dllexport) int add(int x, int y)
{
return x+y;
}
然后生成,在debug里找到dll文件(最好把dll,lib,pdb都copy过来),copy到你的C#的bin文件夹下
在C#里添加一个cs函数,在里面添加引用using System.Runtime.InteropServices;
class 前添加public(改成public才可以被其他调用)
在class里添加C里面函数的声明;示例如下
[DllImport("text.meo.dll")]
public static extern int add(int x,int y);
然后在其他地方就可以通过这个cs函数.add调用add函数 , 其他的函数和这一样操作
我这边测试是没什么问题,有什么疑问再问我
c语言写的程序怎么样生成.dll文件?dll制作步骤:
1.编写dll函数实现源代码hello.c
#include
int say_hello(char* name)
{
printf( "hello %s\n ", name);
return 1;
}
2.编写dll函数输出定义文件hello.def.
LIBRARY hello
EXPORTS
say_hello @1
3.编译dll源码,生成dll,lib文件.
3.1 新建命令行窗口
3.2 设置PATH ?? INCLUDE ?? LIB 3个环境变量.
SET PATH=K:\vcnet\vc7\bin;%PATH%
SET INCLUDE=K:\vcnet\vc7\include;%INCLUDE%
SET LIB=K:\vsnet\Vc7\lib;%LIB%
3.3 编译hello.c
cd K:\Source\dllsample (hello.c和hello.def所在目录)
cl /c hello.c
3.4 链接hello.obj,生成hello.dll,hello.lib两个文件.
link /def:hello.def /dll hello.obj
4.测试dll函数.
4.1 编写测试代码 test.c
extern int say_hello(char* name);
int main(int argc,char** argv)
{
say_hello( "robbie ");
return 0;
}
4.2 编译测试代码test.c
cl /c test.c
4.3 链接test.obj和 hello.lib,生成可执行文件test.exe
link test.obj hello.lib
4.4 运行test.exe,屏幕输出:
hello robbie
至此,一个dll构造完毕.
怎么把C语言程序打包成DLL文件dll制作步骤: 1.编写dll函数实现源代码hello.c #include int say_hello(char* name) { printf( "hello %s\n ", name); return 1; } 2.编写dll函数输出定义文件hello.def. LIBRARY hello EXPORTS say_hello @1 3.编译dll源码,生成dll,lib文件. 3....

推荐阅读