㈠ 我现在想把自己写的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两个文件添加到项目中。