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?