Witam,
Potrzebuję napisać bibliotekę. Jako, że nigdy tego nie robiłem, chciałem sprawdzić z czym to się je i napisać coś bardzo małego na szybko.
No i mam w VS15 dwa projekty:
1 math, który jest właśnie biblioteką dll, 2 pliki:
mathfuncs.h:
#pragma once
namespace math
{
class mathfuncs
{
public:
double plus(double, double);
double minus(double, double);
};
}
mathfuncs.cpp:
#include "mathfuncs.h"
double math::mathfuncs::plus(double a, double b)
{
return a + b;
}
double math::mathfuncs::minus(double a, double b)
{
return a - b;
}
We właściwościach mam Configuratin Type: Dynamic Library (.dll).
Buduję, dostaję* math.dl*. Jest ok, jak na razie :)
2 mathapp, który będzie wykorzystywał math.dll.
mathapp.cpp:
// mathapp.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include "mathfuncs.h"
using namespace std;
using namespace math;
int main()
{
double a = 2.1, b = 3.14;
mathfuncs math;
cout << math.plus(a, b) << '\n';
cout << math.minus(a, b) << '\n';
cout << "\nKONIEC";
std::cin.clear();
std::cin.get();
return 0;
}
*math.dll *oraz mathfuncs.h i mathfuncs.cpp skopiowałem do folderu z projektem mathapp. We właściwościach Configuration Properties->VC++ Directories:
Include Directories oraz Library Directories dałem ścieżkę do folderu z projektem mathapp
Przy próbie zbudowania dostaję dwa błędy:
1>mathapp.obj : error LNK2019: unresolved external symbol "public: double __thiscall math::mathfuncs::plus(double,double)" (?plus@mathfuncs@math@@QAENNN@Z) referenced in function _main
1>mathapp.obj : error LNK2019: unresolved external symbol "public: double __thiscall math::mathfuncs::minus(double,double)" (?minus@mathfuncs@math@@QAENNN@Z) referenced in function _main
Z tego co wiem, to chodzi o to, że linker nie widzi mathfuncs.cpp. Jak mam to zrobić, żeby nie było potrzeby ręcznego #include "mathfuncs.cpp" lub dodawania go do Resources files?
Pozdrawiam,
Fryderyk.