Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Klasa fstream w dll-ce

$
0
0

Wszystkie moje funkcje, które mam w dll-ce i mają w sobie pomocnicze zmienne automatyczne klasy fstream nie działają. Gdy debuguję to dostaję SIGSEGV. W konsoli wyświetla się błąd 0xC0000005 lub 0xFF i wywala.

gdy f funkcji głównej program dojdzie do tej linii

cout<<counting("pliku.txt");

to wywala "Program przestał działać".

Oto plik text.h (którego nie załączam w projekcie bo nie mam w dll-ce klas, a pozostałe funkcje działają prawidłowo bez niego)

#ifndef __TEXT_H__
#define __TEXT_H__

using namespace std;

#include <windows.h>

/*  To use this exported function of dll, include this header
 *  in your project.
 */

#ifdef BUILD_DLL
    #define DLL_EXPORT __declspec(dllexport)
#else
    #define DLL_EXPORT __declspec(dllimport)
#endif


#ifdef __cplusplus
extern "C"
{
#endif

void DLL_EXPORT SomeFunction(const LPCSTR sometext);

bool DLL_EXPORT is_white(string linia); //sprawdza czy linia składa sie jedynie z białych znaków lub jest pusta
bool DLL_EXPORT is_comp_empty(string linia); //sprawdza czy linia jest pusta
bool DLL_EXPORT is_comment(string linia); //sprawdza czy linia jest komentarzem
bool DLL_EXPORT is_int_convert(string linia); //sprawdza czy linię można przekonwertować na liczbę całkowitą
string DLL_EXPORT without(string linia, char znak); //zwraca linię bez znaku przekazanego jako argument
string DLL_EXPORT inttostr(int liczba); //konwertuje liczbę całkowitą na ciąg znaków
string DLL_EXPORT substitute(string tekst, string co, string na_co); //wyszukuje w tekście frazę i zastępuje ją określonym ciągiem znaków
string DLL_EXPORT read(string nazwa, int nr); //zwraca konkretną linijkę z pliku
int DLL_EXPORT counting(string nazwa); //zlicza ilość linii w pliku
void DLL_EXPORT rewrite(string p1, string p2); //przepisuje całą zawartość pliku do innego pliku

//Funkcje korzystające z biblioteki <vector>
void DLL_EXPORT paste(string nazwa, string tekst, int nr); //wstawia w pliku w określoną linię jakiś tekst, przesuwając niższe o 1 w dół
void DLL_EXPORT cut(string nazwa, int nr); //usuwa z pliku określoną linię, przesuwając niższe o 1 w górę

#ifdef __cplusplus
}
#endif

#endif // __TEXT_H__

 

A oto nie działające funkcje z text.cpp

string DLL_EXPORT read(string nazwa, int nr)
{
	fstream plik;
	string linia;
	int n=1;

	plik.open(nazwa.c_str(), ios::in);
	while(getline(plik,linia))
	{
		if(n == nr)
			return linia;
		n++;
	}
	plik.close();
}

int DLL_EXPORT counting(string nazwa)
{
	fstream plik;
	string linia;
	int ilosc_linii=0;
	plik.open(nazwa.c_str(), ios::in);
	while(getline(plik,linia))
		ilosc_linii++;
	plik.close();

	return ilosc_linii;
}

void DLL_EXPORT rewrite(string p1, string p2)
{
	fstream plik1,plik2;
	string linia1;

	plik1.open(p1.c_str(), ios::in);
	plik2.open(p2.c_str(), ios::out);
	{
		while(getline(plik1,linia1))
			plik2<<linia1<<endl;
	}
	plik1.close();
	plik1.clear();
	plik2.close();
	plik2.clear();
}

 

Ktoś wie jak to jest z tymi plikami?


Viewing all articles
Browse latest Browse all 21942

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra