Linux环境下创建并使用动态链接库
来源:互联网 发布:淘宝智能客服机器人 编辑:程序博客网 时间:2024/06/04 18:15
在桌面创建dll.c文件,将下面代码复制进去。
#include "dll.h"int sum(int* a, int n){ int i,s=0; for (i=0;i<n;i++) s+=a[i]; return s;}int plus(int a, int b){ return a+b; }
在桌面创建dll.h文件,将下面代码复制进去。#ifndef DLL_H #define DLL_H int sum(int* a, int n); int plus(int a, int b); #endif
在cmd中运行如下命令。
然后桌面上就会多出.o和.so文件。
打开Canopy创建测试程序,文件名为:test.py,并将下面的代码复制到test.py里去。
# -*- coding: utf-8_ -*-import wximport ctypesimport syssys.path.append('.')class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, wx.ID_ANY, 'DLL Example', size=(300, 200)) panel = wx.Panel(self, wx.ID_ANY) In=wx.StaticText(panel, wx.ID_ANY, u" 输入:") self.InText = wx.TextCtrl(panel, wx.ID_ANY, "1 2", size=(175, -1)) self.InText.SetInsertionPoint(0) Out=wx.StaticText(panel, wx.ID_ANY, u" DLL计算结果:") self.OutText = wx.TextCtrl(panel, wx.ID_ANY, " ", size=(175, -1)) Compute=wx.Button(panel, wx.ID_ANY, u"计算", size=(50, -1)) self.Bind(wx.EVT_BUTTON, self.EvtCompute, Compute) Exit=wx.Button(panel, wx.ID_ANY, u"退出", size=(50, -1)) self.Bind(wx.EVT_BUTTON, self.EvtExit, Exit) sizer = wx.FlexGridSizer(cols=2, hgap=10, vgap=10) sizer.AddMany([In, self.InText,Out, self.OutText,Compute,Exit]) panel.SetSizer(sizer) self.Centre() # known Canopy bug: absolute filename required self.cdll=ctypes.CDLL("/home/wx/Desktop/dll.so") def EvtCompute(self, event): a=[int(x) for x in self.InText.GetValue().split()] if len(a)==2: result=self.cdll.plus(a[0],a[1]) else: result=self.cdll.sum(ctypes.ARRAY(ctypes.c_int,len(a))(*a),len(a)) self.OutText.SetValue(str(result)) def EvtExit(self, event): self.Destroy() if __name__ == '__main__':# import os# os.chdir(r"your working directory") app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
注意修改动态链接库的路径名!然后就可以运行了。
阅读全文
0 0
- Linux环境下创建并使用动态链接库
- Linux环境下c语言静态链接库和动态链接库创建和使用
- Linux环境下c语言静态链接库和动态链接库创建和使用
- Linux环境下c语言静态链接库和动态链接库创建和使用
- Windows环境下创建并使用动态链接库(CodeBlocks版)
- 编译链接------Linux环境下c语言静态链接库和动态链接库创建和使用
- 编译链接------Linux环境下c语言静态链接库和动态链接库创建和使用
- windows下创建并使用动态链接库(.dll)
- Window创建并使用动态链接库
- Linux下动态链接库的创建和使用
- linux下动态链接库的创建和使用
- Linux下动态链接库的创建和使用
- Linux 下动态链接库的创建与使用
- Code::Blocks环境下创建并显式调用动态链接库
- LINUX下动态链接库的创建
- Linux下动态链接库创建问题
- Linux环境下配置动态链接库
- Linux环境下加载动态链接库
- 逆序数(分治)
- 三天打鱼,两天晒网程序(C语言/C++)
- vb.net 教程 11-1 打印组件 2 PrintDialog 1
- Repeated DNA Sequences
- FreeMarker入门教程
- Linux环境下创建并使用动态链接库
- while练习
- 关于List.remove在for循环中出现问题的解决方案
- Java框架之Hibernate--初识Hibernate
- 用思维导图整理产品结构
- Java网络编程——第十章 非阻塞I/O
- JS if语句
- Java怎么部署工程及访问不带项目名的工程
- PHP语言性能优化——少使用魔术方法