Python 调用 C 语言的简单流程(一)中,介绍了非常简单的建立DLL项目和用Python调用dll文件的流程,现在把这个技术应用到实践的时候,可能会碰到这样的问题:“AttributeError: function '****' not found”这是为什么呢?
现在假设在一个文件中有这样两个函数:
现在假设在一个文件中有这样两个函数:
// Header
extern "C"
{ // Name in DLL will be "MyAdd" - but you won't be able to find parameters etc...
__declspec(dllexport) int MyAdd(int a, int b);
}
// Name will be with lot of prefixes but some other info is provided - IMHO better approach
__declspec(dllexport) int MyAdd2(int a, int b);
//.cpp Code
__declspec(dllexport) int MyAdd(int a, int b)
{ return a+b;
}
__declspec(dllexport) int MyAdd2(int a, int b)
{ return a+b;
}
你感觉两个相同的函数,就差了一个extern"C"声明,这会有区别吗,这会导致你的Python调用dll的程序出错吗?答案就是:这正是导致AttributerError的元凶!
举个例子:
在C++的文件中函数生成的dll文件对应的导出名字是这个