基本 DLL 函数

Basic DLL Function

本文关键字:函数 DLL 基本      更新时间:2023-10-16

我是C和编程世界的新手! 尝试创建打印消息框的简单DLL文件 你好世界!

这是CPP

//main.cpp    

#include "main.h"
// a sample exported function
void DLL_EXPORT SomeFunction(const LPCSTR sometext)
{
MessageBoxA(0, sometext, "DLL Message", MB_OK | MB_ICONINFORMATION);
}
extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
break;
case DLL_PROCESS_DETACH:
// detach from process
break;
case DLL_THREAD_ATTACH:
// attach to thread
break;
case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}

在这里 h

//main.h
#ifndef __MAIN_H__
#define __MAIN_H__
#include <windows.h>
/*  To use this exported function of dll, include this header
*  in your project.
*/
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif

#ifdef __cplusplus
extern "C"
{
#endif
void DLL_EXPORT SomeFunction(const LPCSTR sometext);
#ifdef __cplusplus
}
#endif
#endif // __MAIN_H__

关键是,一旦我制作了一个加载 DLL 的控制台,我就必须从中调用该函数!我该怎么做才能简单地导出所有函数而不给它们一个名字,而只是从控制台中的 dll 加载所有内容?比如如果有人想使用我的 DLL 并且不知道该怎么称呼怎么办?或者,如果我有一个调用 DLL 的 exe 想要创建一个自定义 DLL 并调用我的函数?这不是为了黑客海豚! 对不起技能谢谢

">

如果有人想使用我的DLL并且不知道该怎么称呼怎么办">- 如果有人使用您的DLL,他需要知道该调用什么,没有简单的方法(因此您通常为*.h提供函数声明(。

实际上有一些方法可以枚举DLL提供的函数(例如,请参阅此处:Win32 API枚举dll导出函数?(,但是这不是大多数DLL库通常使用的方式。

请注意,您可以枚举函数名称,但没有标头,找出要传递给每个函数的参数以及函数返回的类型可能并不总是那么容易。通常可以使用C++导出的函数来完成(C++名称重整提供参数计数和类型信息(,但如果函数导出为普通"C"函数(其中名称是没有重整的简单函数名称(,则不那么容易。