用户工具

站点工具


vs2015:dll

dll

--目前自己测试发现vs2015企业版使用DLL功能。vs2015.ent_chs.iso

而且在实际测试中没有发现需要各种vc runtime dll。

参考网页: https://blog.csdn.net/liguangxilgx/article/details/80552378

vs2015生成/调用DLL

DLL export/import 导入导出定义

// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 MYDLL_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// MYDLL_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
 
// 此类是从 MyDLL.dll 导出的
class MYDLL_API CMyDLL {
public:
	CMyDLL(void);
	// TODO:  在此添加您的方法。
};
 
extern MYDLL_API int nMyDLL;
 
// 说明,如果想与python接口,必须要定义extern "C",因为python只有与C的接口,没有cpp的接口。
extern "C" MYDLL_API int fnMyDLL(void);
extern "C" MYDLL_API int ft_init();
extern "C" MYDLL_API void ft_close();

注意事项

vs使用时有debug/release & win32/x64的区别。

比如使用release x64生成了一个DLL文件,那么这个文件只能用于release x64配置调用该DLL文件,其它情况以此类推。

python调用DLL

Python: ctypes CDLL 和 WinDLL区别

原创WMSmile 最后发布于2019-09-16 15:34:17 阅读数 1037 收藏 展开 ctypes提供了两个LibraryLoader:CDLL和WinDLL。 CDLL支持cdecl,WinDLL支持stdcall(仅限Windows)。 根据您在C库中使用的调用约定,您必须在Python中使用正确的LibraryLoader。 ———————————————— 版权声明:本文为CSDN博主「WMSmile」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/wm9028/article/details/100889345

调用not found问题

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

出现问题的原因:

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

参考网页:https://ask.csdn.net/questions/695713

vs2015/dll.txt · 最后更改: 2023/03/17 10:12 由 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki