首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python调用 C语言DLL有关问题

2012-09-01 
python调用 C语言DLL问题VS2010 想写个简单的C函数生成dll让python调用VS2010 代码#include stdio.h_dec

python调用 C语言DLL问题
VS2010 想写个简单的C函数 生成dll 让python调用

VS2010 代码
#include <stdio.h>

_declspec(dllexport) int add(int a, int b)
{
 return a+b;
}

python 代码
from ctypes import *
dll=CDLL("add.dll")
print dll.add(2,3)

提示说 AttributeError: function 'add' not found

问下是dll写的有问题 不符合python 还是python代码问题
调用的dll路径如何设置

[解决办法]
vc默认是用c++方式编译,函数名会加很多装饰符号,代码里加extern "C"声明一下...
[解决办法]
楼上正解,C++把add的名字给修饰了
写PYTHON的扩展dll,建议还是用原生的C好些
[解决办法]

探讨
vc默认是用c++方式编译,函数名会加很多装饰符号,代码里加extern "C"声明一下...

[解决办法]
或者可以使用SIP来处理一下,您可以去参考一下,不过步骤比这种调用方式多一点。一个例子在这:http://topic.csdn.net/u/20120324/22/cd8796f8-c601-492c-992d-3d70d58ba51b.html?07033688857013248#replyachor
[解决办法]
同意2,3,4楼的,我给个连接给你http://hi.baidu.com/bigccyy/blog/item/bbf86963d45f43600d33fa08.html,我测试过的
[解决办法]
楼上说的都对。给个例子
dll代码:
C/C++ code
// test_dll.cpp : Defines the entry point for the DLL application.//#include "stdafx.h"#include <stdio.h>BOOL APIENTRY DllMain( HANDLE hModule,                        DWORD  ul_reason_for_call,                        LPVOID lpReserved                     ){    return TRUE;}extern "C" _declspec(dllexport) void print_sum(unsigned long ulNum) {     unsigned long i = 1;    while (ulNum != 0)    {        printf("\nThe ulNum is: %u ", i);        ulNum--;        i++;    }} 

热点排行