Muepe32
Erfahrenes Mitglied
Das Problem ist folgendes:
Du kompilierst die Sipgate.cpp als C-Code, die Request.cpp jedoch als C++-Code. Nun ist es aber so, dass in C die Funktionen anders benannt werdern als bei C++. In C wird aus void GetRequest(char*) der Symbolname _GetRequest in C++ wird daraus ?GetRequest@@YAXPAD@Z. Die Request.obj beinhält also die C++ Variante während die Sipgate.cpp nach der C-Variante verlangt.
Die Symbolnamen gelten so natürlich nur für die cl.exe, jeder Compiler ist da bisschen anders.
Möglichkeiten:
Entweder alle Dateien einheitlich als C oder C++ compilieren oder in der Request.cpp die Deklaration ändern.
Du kompilierst die Sipgate.cpp als C-Code, die Request.cpp jedoch als C++-Code. Nun ist es aber so, dass in C die Funktionen anders benannt werdern als bei C++. In C wird aus void GetRequest(char*) der Symbolname _GetRequest in C++ wird daraus ?GetRequest@@YAXPAD@Z. Die Request.obj beinhält also die C++ Variante während die Sipgate.cpp nach der C-Variante verlangt.
Die Symbolnamen gelten so natürlich nur für die cl.exe, jeder Compiler ist da bisschen anders.
Möglichkeiten:
Entweder alle Dateien einheitlich als C oder C++ compilieren oder in der Request.cpp die Deklaration ändern.
C++:
extern "C" void GetRequest(char tmp[1000])
{
string value = tmp;
string result = HTTPRequest("http://localhost", 80, "GET /datei.php?param="+value+" HTTP/1.1\r\n"
"Host: localhost\r\n"
"Accept-Encoding: text\r\n\r\n");
}