Cpp vector in DLL verwenden
Hallo Zusammen
Kleines Vorwrt:
Ich habe in C++ ein paar Funktionen geschrieben, die ich gerne in eine DLL aufnehmen möchte und diese dann in C# importieren und verwenden.
Ich verwende sonst, eigtl. C# für so ziemlich alles, da man mit C# aber performence mässig nicht so gut dran ist, wie bei C++, habe ich mich entschieden, die Funktion in C++ umzuschreiben.
Dazu muss ich noch sagen, dass meine C++ Kenntnisse eher bescheiden sind...
Ich verwende VS2010 unter Win 7, was aber keine wesentlichen Punkte sein dürften.
Zum Problem:
Wie oben schon erwähnt, habe ich eine Methode umgeschrieben, aber wenn ich das ganze builden möchte, kommen folgende Fehler:
Error 1 error C2143: syntax error : missing ';' before '<' l:\calculation\calculation\calculation.cpp 45 1 Calculation
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int l:\calculation\calculation\calculation.cpp 45 1 Calculation
Error 3 error C2143: syntax error : missing ';' before '{' l:\calculation\calculation\calculation.cpp 46 1 Calculation
Error 4 error C2447: '{' : missing function header (old-style formal list?) l:\calculation\calculation\calculation.cpp 46 1 Calculation
5 IntelliSense: vector is not a template l:\calculation\calculation\calculation.cpp 9 1 Calculation
6 IntelliSense: identifier "vector" is undefined l:\calculation\calculation\calculation.cpp 11 2 Calculation
7 IntelliSense: type name is not allowed l:\calculation\calculation\calculation.cpp 11 9 Calculation
8 IntelliSense: identifier "primes" is undefined l:\calculation\calculation\calculation.cpp 11 14 Calculation
9 IntelliSense: vector is not a template l:\calculation\calculation\calculation.cpp 45 2 Calculation
10 IntelliSense: identifier "vector" is undefined l:\calculation\calculation\calculation.cpp 47 3 Calculation
11 IntelliSense: type name is not allowed l:\calculation\calculation\calculation.cpp 47 10 Calculation
12 IntelliSense: identifier "factors" is undefined l:\calculation\calculation\calculation.cpp 47 15 Calculation
Zum verständnis ist hier noch mein Source-Code:
Wenn ich das richtig verstehe, kann er die "vectors<int>" aus irgendwelchen Gründen nicht verwenden. Um mein Code zu testen, habe ich vorher eine Console-App gemacht, da hatte ich mit den vector<int> überhaupt keine Probleme...
Ich hoffe ihr könnt mir helfen, den Fehler zu finden!
Danke
Gruss Blueberry
Kleines Vorwrt:
Ich habe in C++ ein paar Funktionen geschrieben, die ich gerne in eine DLL aufnehmen möchte und diese dann in C# importieren und verwenden.
Ich verwende sonst, eigtl. C# für so ziemlich alles, da man mit C# aber performence mässig nicht so gut dran ist, wie bei C++, habe ich mich entschieden, die Funktion in C++ umzuschreiben.
Dazu muss ich noch sagen, dass meine C++ Kenntnisse eher bescheiden sind...
Ich verwende VS2010 unter Win 7, was aber keine wesentlichen Punkte sein dürften.
Zum Problem:
Wie oben schon erwähnt, habe ich eine Methode umgeschrieben, aber wenn ich das ganze builden möchte, kommen folgende Fehler:
Error 1 error C2143: syntax error : missing ';' before '<' l:\calculation\calculation\calculation.cpp 45 1 Calculation
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int l:\calculation\calculation\calculation.cpp 45 1 Calculation
Error 3 error C2143: syntax error : missing ';' before '{' l:\calculation\calculation\calculation.cpp 46 1 Calculation
Error 4 error C2447: '{' : missing function header (old-style formal list?) l:\calculation\calculation\calculation.cpp 46 1 Calculation
5 IntelliSense: vector is not a template l:\calculation\calculation\calculation.cpp 9 1 Calculation
6 IntelliSense: identifier "vector" is undefined l:\calculation\calculation\calculation.cpp 11 2 Calculation
7 IntelliSense: type name is not allowed l:\calculation\calculation\calculation.cpp 11 9 Calculation
8 IntelliSense: identifier "primes" is undefined l:\calculation\calculation\calculation.cpp 11 14 Calculation
9 IntelliSense: vector is not a template l:\calculation\calculation\calculation.cpp 45 2 Calculation
10 IntelliSense: identifier "vector" is undefined l:\calculation\calculation\calculation.cpp 47 3 Calculation
11 IntelliSense: type name is not allowed l:\calculation\calculation\calculation.cpp 47 10 Calculation
12 IntelliSense: identifier "factors" is undefined l:\calculation\calculation\calculation.cpp 47 15 Calculation
Zum verständnis ist hier noch mein Source-Code:
#include "stdafx.h"
#include <cstring>
#include <math.h>
#include <vector>
vector<int> _stdcall GetPrimes(int min, int max)
{
vector<int> primes;
if(min <= 2)
{
primes.push_back(2);
min = 3;
}
else if(min % 2 == 0)
{
min++;
}
for(int i = min; i < max; i+=2)
{
int testScope = floor(sqrt(double(i)));
primes.push_back(i);
for(int j = 3; j < testScope; j +=2)
{
if((i % j) == 0)
{
primes.pop_back();
break;
}
}
}
return primes;
};
vector<int> _stdcall GetFactors(int Number)
{
vector<int> factors;
factors.push_back(1);
for(int i = 2; i < Number; i++)
{
if((Number % i) == 0)
{
factors.push_back(i);
}
}
factors.push_back(Number);
return factors;
};
Wenn ich das richtig verstehe, kann er die "vectors<int>" aus irgendwelchen Gründen nicht verwenden. Um mein Code zu testen, habe ich vorher eine Console-App gemacht, da hatte ich mit den vector<int> überhaupt keine Probleme...
Ich hoffe ihr könnt mir helfen, den Fehler zu finden!
Danke
Gruss Blueberry
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 152458
Url: https://administrator.de/contentid/152458
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
1 Kommentar