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好些
[解决办法]
[解决办法]
或者可以使用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++; }}