Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to output. dll #31

Open
zhangzhen999 opened this issue Aug 9, 2024 · 1 comment
Open

How to output. dll #31

zhangzhen999 opened this issue Aug 9, 2024 · 1 comment

Comments

@zhangzhen999
Copy link

May I ask the author how to rewrite the code to output * *. dll

@UNeedCryDear
Copy link
Owner

UNeedCryDear commented Aug 9, 2024

c/c++封装dll是一个需要稍微学习一下的知识(windows开发必修),可以搜索下c++导出dll封装并调用。
而且导出方式跟你的调用方式也有关系,你是静态调用还是动态调用,导出只要某些特定函数还是导出整个类都有点区别。
另外就是要确定输入输出的格式,对外暴露的接口信息,是否需要C格式兼容(extend “C”)还是c++就行。
建议用vs创建项目,选择c++ 然后选择 动态链接库,有导出符号选项的话可以选上。以下为vs自动创建的c++格式导出dll的demo

  • export_dll_demo.h
// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 EXPORT_DLL_DEMO_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// EXPORT_DLL_DEMO_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef EXPORT_DLL_DEMO_EXPORTS
#define EXPORT_DLL_DEMO_API __declspec(dllexport)

#else
#define EXPORT_DLL_DEMO_API __declspec(dllimport)
#endif

// 此类是从 export_dll_demo.dll 导出的
class EXPORT_DLL_DEMO_API Cexport_dll_demo {
public:
	Cexport_dll_demo(void);
	// TODO:  在此添加您的方法。
};

extern EXPORT_DLL_DEMO_API int nexport_dll_demo;

EXPORT_DLL_DEMO_API int fnexport_dll_demo(void);
  • export_dll_demo.cpp
// export_dll_demo.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "export_dll_demo.h"


// 这是导出变量的一个示例
EXPORT_DLL_DEMO_API int nexport_dll_demo=0;

// 这是导出函数的一个示例。
EXPORT_DLL_DEMO_API int fnexport_dll_demo(void)
{
    return 42;
}

// 这是已导出类的构造函数。
// 有关类定义的信息,请参阅 export_dll_demo.h
Cexport_dll_demo::Cexport_dll_demo()
{
    return;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants