Ahojte, bavím sa z dllkami, ale nejak to neviem sfunkčniť do univerzálnej podoby ani podľa návodov.
Toto mi ide v pohode:
//kniznica.h
#define MY_DLL extern "C" __declspec(dllexport)
MY_DLL int suma(int paA, int paB);
//kniznica.cpp
#include "stdafx.h"
#include "kniznica.h"
int suma(int paA, int paB)
{
return paA + paB;
}
//skusobnyprogram.cpp
#include "stdafx.h"
#include <iostream>
extern "C" __declspec(dllimport) int suma(int paA, int paB);
using namespace std;
int main()
{
cout<<"scitame: 2 + 3 = "<<suma(2,3);
getchar();
return 0;
}
keď to však zmením takto s použitím preprocesoru tak to nejde:
//tento kod nefunguje
//kniznica.h
#ifndef KNIZNICA_EXPORTS
#define MY_DLL extern "C" __declspec(dllimport)
#else
#define MY_DLL extern "C" __declspec(dllexport)
#endif
MY_DLL int suma(int paA, int paB);
//kniznica.cpp
#include "stdafx.h"
#include "kniznica.h"
int suma(int paA, int paB)
{
return paA + paB;
}
//skusobnyprogram.cpp
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout<<"scitame: 2 + 3 = "<<suma(2,3);
getchar();
return 0;
}
neskompiluje s chybou error C3861: 'suma': identifier not found.
Neviete v čom je chyba? Samozrejme KNIZNICA_EXPORTS mám definované.