Создание простой библиотеки Dynamic-Link
В следующем примере приведен исходный код, необходимый для создания простой библиотеки DLL Myputs.dll. Он определяет простую функцию печати строк под названием myPuts. Библиотека DLL Myputs не определяет функцию точки входа, так как она связана с библиотекой времени выполнения C и не имеет собственных функций инициализации или очистки.
Чтобы создать библиотеку DLL, следуйте указаниям в документации, входящей в состав средств разработки.
Пример использования myPuts см. в разделе Использование динамического связывания Load-Time или Использование динамической компоновки Run-Time.
// The myPuts function writes a null-terminated string to
// the standard output device.
// The export mechanism used here is the __declspec(export)
// method supported by Microsoft Visual Studio, but any
// other export method supported by your development
// environment may be substituted.
#include <windows.h>
#define EOF (-1)
#ifdef __cplusplus // If used by C++ code,
extern "C" { // we need to export the C interface
#endif
__declspec(dllexport) int __cdecl myPuts(LPCWSTR lpszMsg)
{
DWORD cchWritten;
HANDLE hConout;
BOOL fRet;
// Get a handle to the console output device.
hConout = CreateFileW(L"CONOUT$",
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (INVALID_HANDLE_VALUE == hConout)
return EOF;
// Write a null-terminated string to the console output device.
while (*lpszMsg != L'\0')
{
fRet = WriteConsole(hConout, lpszMsg, 1, &cchWritten, NULL);
if( (FALSE == fRet) || (1 != cchWritten) )
return EOF;
lpszMsg++;
}
return 1;
}
#ifdef __cplusplus
}
#endif
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по