DLL con STL (vector,string,stringstream) exportar

Iniciado por patilanz, 16 Agosto 2015, 06:08 AM

0 Miembros y 2 Visitantes están viendo este tema.

patilanz

Hola tengo una DLL que exporta esta función:

Código (cpp) [Seleccionar]

//Al principio era: vector<string> split(string str,char c);
void split(string str, char c,vector<string>* strings){
stringstream stream(str);
string item;
while (getline(stream, item, c)){
strings->push_back(item);
}
}


Luego:
Código (cpp) [Seleccionar]
HMODULE lib = LoadLibrary("C:\\Users\\Dimitar\\Documents\\Visual Studio 2013\\Projects\\BasicTools\\Release\\BasicTools.dll");
if (lib == NULL){
e("Library failed to load!");
}
_split split = (_split)GetProcAddress(lib, "split");
if (!split){
e("Failed to load split!");
}
string test = "Hola me llamo Jose!";
vector<string> strings;
split(test, ' ', &strings);
for (auto str : strings){
cout << str << endl;
}


Recibo error por alocar memoria, me lo esperaba...
Hay alguna manera de exportar vector y string?

Un saludo

ivancea96

Alocar xD *reservar*

¿Con vector<string> split(string str,char c); te da problemas?

patilanz

Cita de: ivancea96 en 16 Agosto 2015, 13:27 PM
Alocar xD *reservar*

¿Con vector<string> split(string str,char c); te da problemas?

Reservar, oops xD
Código (cpp) [Seleccionar]
vector<string> split(string str, char c){
vector<string> strings;
stringstream stream(str);
string item;
while (getline(stream, item, c)){
strings.push_back(item);
}
return strings;
}

Código (cpp) [Seleccionar]
typedef vector<string>(*_split)(string,char);
//...
vector<string> strings = split(test, ' ');


Error: 0xC0000005: Infracción de acceso al leer la ubicación 0x0111EFFC.

BlackZeroX

No lo se quizas si...

Código (cpp) [Seleccionar]
vector<string> strings = new vector<string>();

Saludos!¡.
The Dark Shadow is my passion.