Python调用c++写的dll,出现function "add"not found错误

该dll在c++里面可以成功调用。
dll的.h:
#pragma once
#ifdef FILE_RW_DLL_EXPORTS
#define FILE_RW_DLL_API extern "C"__declspec(dllexport)
#else
#define FILE_RW_DLL_API extern "C"__declspec(dllimport)
#endif

#include "stdafx.h"
double __stdcall add(double a, double b);
dll的.cpp:
#include "stdafx.h"
#include "file_rw_dll.h"
double __stdcall add(double a, double b)
{
return (a+b);
}
python调用程序:
import ctypes
filedll=ctypes.WinDLL("file_rw_dll.dll")
print(filedll.add(1,2))
在c++中调用该生成的dll没有问题,python中调用出现“AttributeError: function 'add' not found”
求教!

1个回答

在函数声明上没有使用
extern "C"__declspec(dllexport)
也就是你定义的FILE_RW_DLL_API
如果不做这样的声明,函数就按照c++的方式进行编译,在python中不能访问,但在c++中可以访问。

qq_38232171
qq_38232171 多谢,能再问一下吗,在python中可以调用了,但是返回值有问题,是随机的,没执行函数的内容
一年多之前 回复
moray126
moray126 回复qq_38232171: https://msdn.microsoft.com/zh-cn/library/a90k134d.aspx
一年多之前 回复
moray126
moray126 回复qq_38232171: extern "C" double __stdcall add(double a, double b);
一年多之前 回复
moray126
moray126 回复qq_38232171: __declspec( dllexport ) 是用来导出类的
一年多之前 回复
qq_38232171
qq_38232171 复制错了,声明前面直接用FILE_RW_DLL_API用这个或者 extern "C"__declspec(dllexport)试了都会出错
一年多之前 回复
qq_38232171
qq_38232171 请问具体要怎么写声明,直接这么写FILE_RW_DLL_API extern "C"__declspec(dllexport) double __stdcall add(double a, double b);会报错
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!