Скомпилировать DLL библиотеку в VS - C (СИ)
Формулировка задачи:
Хочу получить edrlib.dll и edrlib.lib. Для того чтобы откомпилировать библиотеку я создал в VS 6.0 новый пустой проект (динамически подключаемая библиотека) и подключил файлы edrlib.h и edrlib.c.
edrlib.h
edrlib.c
Когда пытаюсь скомпилировать получаю ну очень информативные ошибки:
те ругается оно на заголовок и реализацию моей функции EdrCenterText. Что это за странное описание ошибки от vs и как от неё избавиться (от ошибки, не от vs) ?
#define EXPORT extern "C" __declspec(dllexport) EXPORT BOOL CALLBACK EdrCenterText (HDC, PRECT, PSTR);
#include <windows.h.>
#include <string.h>
#include "edrlib.h"
int WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
return TRUE;
}
EXPORT BOOL CALLBACK EdrCenterText(HDC hdc, PRECT prc, PSTR pString)
{
int iLength;
SIZE size;
iLength=strlen(pString);
GetTextExtentPoint32(hdc, pString, iLength, &size);
return TextOut(hdc, (prc->right - prc->left - size.cx)/2, (prc->bottom - prc->top - size.cy)/2, pString, iLength);
}--------------------Configuration: Lib - Win32 Debug-------------------- Compiling... edrlib.c c:\c++\vs projects\lib\edrlib.h(3) : error C2059: syntax error : 'string' c:\c++\vs projects\lib\edrlib.c(10) : error C2059: syntax error : 'string' Error executing cl.exe. Lib.dll - 2 error(s), 0 warning(s)
Решение задачи: «Скомпилировать DLL библиотеку в VS»
textual
Листинг программы
// GpearDLL.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include <string.h>
#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif //ввести
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
EXPORT BOOL CALLBACK EdrCenterText(HDC hdc, PRECT prc, PSTR pString)
{
int iLength;
SIZE size;
iLength=strlen(pString);
GetTextExtentPoint32(hdc, pString, iLength, &size);
return TextOut(hdc, (prc->right - prc->left - size.cx)/2, (prc->bottom - prc->top - size.cy)/2, pString, iLength);
}