Dans Visual Studio 2008, en utilisant C++, j'ai essayé de construire une DLL en utilisant les instructions à http://msdn.microsoft.com/en-us/library/ms235636.aspx, sauf que j'ai nommé un fichier source avec une extension de ".c" plutôt que le ".cpp" suggéré.Code C++ Compile avec .cpp Source mais pas .c
Avec une extension de .c, le compilateur génère 37 erreurs. Avec une extension de .cpp, la DLL se construit avec succès.
Quelle est la différence entre l'extension d'un fichier source?
Voici le code complet:
// MathFuncsDll.cpp
// compile with: /EHsc /LD
#include "MathFuncsDll.h"
#include <stdexcept>
using namespace std;
namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}
double MyMathFuncs::Subtract(double a, double b)
{
return a - b;
}
double MyMathFuncs::Multiply(double a, double b)
{
return a * b;
}
double MyMathFuncs::Divide(double a, double b)
{
if (b == 0)
{
throw new invalid_argument("b cannot be zero!");
}
return a/b;
}
}
// MathFuncsDll.h
namespace MathFuncs
{
class MyMathFuncs
{
public:
// Returns a + b
static __declspec(dllexport) double Add(double a, double b);
// Returns a - b
static __declspec(dllexport) double Subtract(double a, double b);
// Returns a * b
static __declspec(dllexport) double Multiply(double a, double b);
// Returns a/b
// Throws DivideByZeroException if b is 0
static __declspec(dllexport) double Divide(double a, double b);
};
}
Il utilise Visual Studio. Cliquez avec le bouton droit sur le fichier dans l'explorateur de solution-> properties-> configuration Properties-> C/C++ -> Advanced-> Compile As. –