导航:首页 > 源码编译 > 怎么将源码写成dll

怎么将源码写成dll

发布时间:2024-01-05 19:41:10

㈠ 我现在想把自己写的python模块源代码封装成dll,然后在别的python脚本里调用,可以吗

可以的,只要把python模块转换成dll模块,利用Python自带的ctypes模块加载调用就行。

ctypes 是Python的外部函数库。它提供了与 C语言兼容的数据类型,并允许调用 DLL 或共享库中的函数。可使用该模块以纯 Python 形式对这些库进行封装。

ctypes导出了cdll对象,在 Windows 系统中还导出了windll和oledll对象用于载入动态链接库。通过操作这些对象的属性,你可以载入外部的动态链接库。cdll载入按标准的cdecl调用协锋滚议导出的函数,而windll导入的库按stdcall调用协议调用其中的函数。

(1)怎么将源码写成dll扩展阅读:

加载调用DLL的相关方法:

1、加载DLL银扒余

加载的时候要根据你将要调用的函数是符合什么调用约定的。

stdcall调用约定:两种加载方式

Objdll = ctypes.windll.LoadLibrary("dllpath")

Objdll = ctypes.WinDLL("dllpath")

cdecl调用约定:也有两种加载方式

Objdll = ctypes.cdll.LoadLibrary("dllpath")

Objdll = ctypes.CDLL("dllpath")

其实windll和cdll分别是WinDLL类和CDll类的对象。

2、调用dll中的方法

加载dll的时候会返回一个DLL对象(假设名字叫Objdll),利用该对象就可以调用dll中的方法。 e.g.如果dll中有个方法名字叫Add(注意如果经过stdcall声明的方法,如果不是用def文件声明的导出函数或者extern “C” 声明的话,编译器会对函数名进行修此旦改,这个要注意。)

调用:nRet = Objdll.Add(12, 15) 即完成一次调用。

㈡ 用VS 如何由源代码生成DLL文件

1:创建DLL工程

文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)

填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。

到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。

MyDLL.cpp内容如下:

testMyDLL.h内容如下

#pragmaonce


extern"C"_declspec(dllexport)intAdd(int&a,int&b);

现在可以编译通过了,但是程序运行就报错,还需要将MyDLL.dll复制到当前项目生成的可执行文件所在的目录。(这一点非常重要)

这里需要注意testMyDLL.cpp文件中调用lib的这句话:

#pragmacomment(lib,"..\debug\MyDLL.lib")

这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。

注意:如果只有dll文件,那么必须在程序里面调用LoadLibrary()函数才能使用,如果有lib文件,那么有两种方式可以马上进行调用

㈢ c怎么生成dll文件

用 vc 6.0 下的cl.exe 和 link.exe工具,请读下文:
声明:下面这篇文章不是我写的,源自:一个叫,有容乃大 的博客

如何手工编写动态链接库(windows dll)

1.本例介绍在命令行(Console)环境下制作dll的方法
2.读者动手前,请确保在windows中安装有编译、链接工具和必要的函数库文件。
3.本例使用C语言实现.
4.本例中使用路径均为我机器上的绝对路径,读者需根据实际情况调整。

工具要求:

Microsoft的编译器cl.exe
MIcrosoft链接器link.exe

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 �0�7 INCLUDE �0�7 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++下,或者win32 mfc下使用标准c写的dll,必须把上面的声明
extern int say_hello(char* name);改成:extern "C " int say_hello(char* name);

㈣ swmm怎么编译生成dll文件

如果需要改写SWMM模型的源代码,通常需要重新编译生成新的动态链接库,也就是常说的DLL,将SWMM 5源码编译为DLL的主要步骤如下:
1. 下载SWMM模型计算引擎源代码后解压,里面包含了模型代码源文件。在对代码进行必要的个性化修改后(如果不需要修改代码,就完全没有必要自己重新编译了,安装SWMM软件后,安装文件下就有计算引擎的DLL文件)就可以进行接下来的工作了。
2. 新建工程:以VC6.0为例,点击文件/新建→工程;选择”win32 dynmaic-link library”,输入工程名字,如SWMM 5,在“位置”下输入新工程存储的路径,点击下方的“确定”;
3. 选择“一个空的工程”,点击“完成”;在弹出的对话框中点击“确定”;
4. “工程”菜单中选择“添加到菜单”→文件,然后把文件夹中的包括头文件在内的SWMM源文件(均以.c,.h后缀)全部添加到工程。
5. 在swmm5.c中取消define DLL前的注释,使代码为如下形式:
//#define CLE
//#define SOL
#define DLL
6. 选择“组建”中的“编译 SWMM5 ”,在出现的对话框选择“是”,然后再选择”build”中的”execute swmm5″就完成了整个文件的编译和执行。生成的debug文件夹中有swmm5.DLL。
7. 最后,把swmm5.def文件添加到工程中重新编译一次。

㈤ 我有一套CS文件的源代码,怎样生成DLL

新建项目 - 类库 把你的CS COPY里 然后右键项目 点生成
DLL文件在 这个项目文件夹DEBUG里面
然后在用到的时候 就引用就行了!
不知道要的是这个不

㈥ 新手求教,如何将从ZLIB官网下下来的源代码编译成zlib.dll

详细步骤如下:
1. 安装zlib-1.2.3.exe和zlib-1.2.3-src.exe。
2. 打开VS2008,在选项的VC++目录中,添加库目录\GnuWin32\lib。添加包含文件目录\GnuWin32\include。
3. 新建一个Win32项目,类型选DLL,点上空项目。
4. 将\GnuWin32\src\zlib\1.2.3\zlib-1.2.3\下的所有头文件和源文件(不包括子目录)添加到项目文件平中。
5. 将\GnuWin32\src\zlib\1.2.3\zlib-1.2.3\win32下的zlib.def和zlib.rc两个文件添加到项目中。

阅读全文

与怎么将源码写成dll相关的资料

热点内容
提高pdf清晰度 浏览:979
服务器网卡mac地址怎么查 浏览:114
裁决之地服务器为什么这么卡 浏览:597
民生app怎么查保险 浏览:467
单片机蓝牙驱动代码 浏览:467
php实现多选后公开 浏览:645
map中的值为数组的怎么编程 浏览:261
加密货币怎么登录 浏览:1002
如何看本机服务器实例名 浏览:388
变频器加密密码 浏览:796
美国银行加密市场 浏览:384
我的世界服务器如何tp玩家 浏览:26
app下载统计怎么找 浏览:264
荔枝app怎么看适合自己的发型 浏览:371
魔兽世界client文件夹 浏览:541
解压音乐轻松入睡 浏览:272
c盘文件夹卡顿怎么办 浏览:450
增量调制编译码实验数据 浏览:763
电流采样信号进单片机 浏览:191
编程教育课程收费 浏览:417