Biblioteka statycznie linkowana

0

Witam

Pisze "kompilator" i kod jest w pliku .lib. Chciałem przetestować działanie tego co napisałem i nie da się. W programie, który używa tej .lib przy kompilacji jest błąd linkera bo obcy symbol Error 3 error LNK2019: unresolved external symbol "public: void __thiscall File::Open(char const *)" (?Open@File@@QAEXPBD@Z) referenced in function _main C:\Projects\AsmScript\Testowanie\main.obj Testowanie Nagłówki do klasy w bibliotece .lib to:

#ifndef _COMPILER
#define _COMPILER

#include <fstream>
using namespace std;

class File : public fstream
{
private:
	bool comment;										// flaga mowiaca czy aktualnie jest komentarz
	bool multilinecomment;								// flaga mowiaca czy jest aktualnie wieloliniowy komentarz
public:
	void Open( const char* path );
	string ReadLine();									// funkcja czytajaca linie i usuwajaca tab, komentarze i wieloliniowe komentarze
};

#endif

Próbowałem już coś takiego jak

__declspec(dllexport)

(choć to nie jest .dll tylko .lib :D) i próbowałem też extern "C"

 Bo może przeciąża mi funkcje, ale zawsze ten sam błąd. Biblioteka sama w sobie kompiluje się bez problemu. W pliku programu który używa biblioteki dołączam odpowiedni nagłówek.
2

Czy masz napisaną tą metodę: void File::Open( const char* path ) { ... } ?
Czy jest ona skompilowana do tej biblioteki .lib ?
Czy przy kompilacji programu testującego dodajesz do listy bibliotek tą swoją bibliotekę?

0

Link do projektu: KLIK!

2
#include "C:\\Projects\\AsmScript\\asmscript.h" inaczej nie znajdzie
#pragma( lib, "C:\\Projects\\AsmScript\\Debug\\AsmScript.lib")
if( c = '/' ) // wpisz w zmienną `c` znak '/' po czym bezwzględnie wykonaj to co wewnątrz if'a

Może zacznij od pisania prostszych programów w jednym pliku, ponieważ nie znasz jeszcze podstaw.

1 użytkowników online, w tym zalogowanych: 0, gości: 1