Ocena użytkownikóww: ***** / 2
Nadesłany przez Nikodem Solarz, 12 marca 2013 20:41
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
wart_bezwzgledna_dll.cxx:
///////////////////////////////////////////
// Implementacja wartości bezwzględnej
// C++ DLL
// by Narzew (12.03.2013)
// dla algorytm.org
///////////////////////////////////////////
///////////////////////////////////////////
// Testowano na środowisku Code Blocks 12.11
// używając GNU GCC++ Compiler na Win XP
///////////////////////////////////////////
///////////////////////////////////////////
//Użycie zewnętrzne (przykład w Ruby) :
//$wartosc_bezwzgledna = Win32API.new('NRGSS', 'wartosc_bezwzgledna','i','i')
//$wartosc_bezwzgledna.call(x)
///////////////////////////////////////////
///////////////////////////////////////////
// Plik : Main.cpp
///////////////////////////////////////////
int DLL_EXPORT wartosc_bezwzgledna(int x)
{
if (x >= 0)
{
return x;
} else {
return -x;
}
}
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
}
///////////////////////////////////////////
// Plik : Main.h
///////////////////////////////////////////
#ifndef __MAIN_H__
#define __MAIN_H__
#include <windows.h>
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C"
{
#endif
int DLL_EXPORT wartosc_bezwzgledna(int x);
#ifdef __cplusplus
}
#endif
#endif // __MAIN_H__