000
08.04.2010, 21:38 Uhr
Hans1982
|
Hi,
ich bekomme beim Versuch eine DLL zu erzeugen folgende Syntax Fehler
1>cprogramme\microsoft visual studio 9.0\vc\include\cstring(21) : error C2059: Syntaxfehler: ':' 1>cprogramme\microsoft visual studio 9.0\vc\include\cstring(21) : error C2143: Syntaxfehler: Es fehlt '{' vor ':'
und
1>cprogramme\microsoft visual studio 9.0\vc\include\cstdio(46) : error C2059: Syntaxfehler: ':' 1>cprogramme\microsoft visual studio 9.0\vc\include\cstdio(46) : error C2143: Syntaxfehler: Es fehlt '{' vor ':'
und davon über 100 sodass die kompilierung abbricht. Ich gehe davon aus das es nicht an meinem Code hängt. Ich habe mal den Code rangehängt. Wahrscheinlich hängt es an dem Teil wo die Textdatei eingelesen wird und den dazugehörigen #include Anweisugen
C++: |
#include <windows.h> #include <math.h> #include <string.h> #include <algorithm> #include <fstream> #include <iostream> #include <iterator> #include <sstream> #include <string> #include <vector> #include <stdlib.h>
int __declspec(dllexport) APIENTRY UserGrinDefinition(double *data); int __declspec(dllexport) APIENTRY UserParamNames(char *data);
BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) { return TRUE; }
int __declspec(dllexport) APIENTRY UserGrinDefinition(double *data) { long double r, index, rKugel, nKritisch, aktMin, aktIndex, x, y, z, dx, dy, dz;
x = data[1]; y = data[2]; z = data[3]; nKritisch = data[10]; rKugel = data[11]; dx = data[12]; dy= data[13]; dz= data[14];
if (dx > 0 && dy > 0 && dz > 0) { if (x > +0.5*dx) x -= dx*(double)ceil(+(x - 0.5*dx)/dx); if (x < -0.5*dx) x += dx*(double)ceil(-(x + 0.5*dx)/dx); if (y > +0.5*dy) y -= dy*(double)ceil(+(y - 0.5*dy)/dy); if (y < -0.5*dy) y += dy*(double)ceil(-(y + 0.5*dy)/dy); if (z > +0.5*dz) z -= dz*(double)ceil(+(z - 0.5*dz)/dz); if (z < -0.5*dz) z += dz*(double)ceil(-(z + 0.5*dz)/dz); }
using namespace std; //Einlesen der Textdatei und schreiben in eine Matrix ifstream ifs("C:\\Simulationsergebnisse.txt"); if (!ifs) { cerr << "Datei kann nicht geöffnet werden" << endl; exit(-1); } vector<vector<double> > matrix; while (ifs) { string line; getline(ifs, line); istringstream iss(line); vector<double> values; copy(istream_iterator<double>(iss), istream_iterator<double>(), back_insert_iterator<vector<double> >(values)); if (values.size() > 0) matrix.push_back(values); }
r = sqrt(x*x + y*y + z*z);
if (r <= rKugel ){ data[6] = 1; data[7] = 0; data[8] = 0; data[9] = 0; } else{ aktMin=1000.; for (int q = 0; q < matrix.size(); ++q){ if (abs(matrix[q][0] - r)< aktMin){ aktMin = abs(matrix [q] [0] -r); aktIndex = q; } } index = sqrt(1-(matrix[aktIndex][1]/nKritisch)); data[6] = index; data[7] = (sqrt(1-(matrix[aktIndex+1][1]/nKritisch))-sqrt(1-(matrix[aktIndex][1]/nKritisch))) /(matrix[aktIndex+1][0]-matrix[aktIndex][0])*x*index/r; data[8] = (sqrt(1-(matrix[aktIndex+1][1]/nKritisch))-sqrt(1-(matrix[aktIndex][1]/nKritisch))) /(matrix[aktIndex+1][0]-matrix[aktIndex][0])*y*index/r; data[9] = (sqrt(1-(matrix[aktIndex+1][1]/nKritisch))-sqrt(1-(matrix[aktIndex][1]/nKritisch))) /(matrix[aktIndex+1][0]-matrix[aktIndex][0])*z*index/r; }
if (index < 0.0) { return -1; }
return 0; }
int __declspec(dllexport) APIENTRY UserParamNames(char *data) { int i; i = (int) data[0]; strcpy(data,""); if (i == 1) strcpy(data,"nKritisch"); if (i == 2) strcpy(data,"rKugel"); if (i == 3) strcpy(data,"Array dx"); if (i == 4) strcpy(data,"Array dy"); if (i == 5) strcpy(data,"Array dz"); return 0; }
|
Vielleich weis ja jemand von euch die Lösung des Problems....
Vielen Dank schonmal für eure Mühe. |