在Visual Studio 2008中,使用C++,我嘗試使用http://msdn.microsoft.com/en-us/library/ms235636.aspx上的說明構建DLL,除了我命名擴展名爲「.c」的源文件,而不是建議的「.cpp」。C++代碼使用.cpp源代碼編譯,但不包含.c
如果擴展名爲.c,則編譯器將引發37個錯誤。通過擴展.cpp,DLL可以成功建立。
源文件擴展的區別是什麼?
這裏是全碼:
// 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);
};
}
他正在使用visual studio。右鍵單擊解決方案資源管理器中的文件 - >屬性 - >配置屬性 - > C/C++ - >高級 - >編譯爲。 –