2个回答
展开全部
创建新的动态链接库 (DLL) 项目
从 “文件”菜单中,选择 “新建”,然后选择 “项目…”。
在 “项目类型”窗格中,选择 “Visual C++”下的 “Win32”。
在 “模板”窗格中,选择 “Win32 控制台应用程序”。
为项目选择一个名称,如
MathFuncsDll,并将其键入 “名称”字段。 为解决方案选择一个名称,如
DynamicLibrary,并将其键入 “解决方案名称”字段。
单击 “确定”启动 Win32 应用程序向导。
在 “Win32 应用程序向导”对话框的 “概述”页中,单击 “下一步”。
在 “Win32 应用程序向导”中的 “应用程序设置”页中,选择 “应用程序类型”下的 “DLL”(如果可用),或者选择 “控制台应用程序”(如果 “DLL”不可用)。 某些版本的 Visual Studio
不支持通过使用向导创建 DLL 项目。您可以稍后对此进行更改,以将项目编译为
DLL。
在 “Win32 应用程序向导”的 “应用程序设置”页中,选择 “附加选项”下的 “空项目”。
单击 “完成”创建项目。
向动态链接库添加类
若要为新类创建头文件,请从 “项目”菜单中选择 “添加新项…”。
将显示 “添加新项”对话框。
在 “类别”窗格中,选择 “Visual C++”下的 “代码”。 在 “模板”窗格中选择 “头文件(.h)”。 为头文件选择一个名称,如
MathFuncsDll.h,并单击 “添加”。 将显示一个空白文件。
添加一个名为“MyMathFuncs”的简单类,以执行常见的算术运算,如加、减、乘和除。代码应与以下内容类似:
以带有颜色区分的格式查看复制到剪贴板打印
// 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);
};
}
// 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);
};
}
请注意此代码方法声明中的 __declspec(dllexport) 修饰符。 这些修饰符使 DLL
能够导出该方法以供其他应用程序使用。有关更多信息,请参见 dllexport, dllimport。
若要为新类创建源文件,请从 “项目”菜单中选择 “添加新项…”。
将显示 “添加新项”对话框。
在 “类别”窗格中,选择 “Visual C++”下的 “代码”。 在 “模板”窗格中,选择 “C++ 文件(.cpp)”。 为源文件选择一个名称,如
MathFuncsDll.cpp,并单击 “添加”。 将显示一个空白文件。
在源文件中实现“MyMathFuncs”的功能。代码应与以下内容类似:
以带有颜色区分的格式查看复制到剪贴板打印
// 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.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;
}
}
若要将项目生成为 DLL,请从
“项目”菜单中选择
MathFuncsDll “属性...”。 在左窗格中,选择 “配置属性”下的 “常规”。
在右窗格中,将 “配置类型”更改为 “动态库(.dll)”。
单击 “确定”保存更改。
说明
如果您从命令行生成项目,请使用
/LD 编译器选项指定输出文件应为 DLL。
有关更多信息,请参见 /MD、/MT、/LD(使用运行库)。
编译该动态链接库,方法是选择
“生成”菜单中的 “生成解决方案”。
这样就创建了一个可供其他程序使用的
DLL。
从 “文件”菜单中,选择 “新建”,然后选择 “项目…”。
在 “项目类型”窗格中,选择 “Visual C++”下的 “Win32”。
在 “模板”窗格中,选择 “Win32 控制台应用程序”。
为项目选择一个名称,如
MathFuncsDll,并将其键入 “名称”字段。 为解决方案选择一个名称,如
DynamicLibrary,并将其键入 “解决方案名称”字段。
单击 “确定”启动 Win32 应用程序向导。
在 “Win32 应用程序向导”对话框的 “概述”页中,单击 “下一步”。
在 “Win32 应用程序向导”中的 “应用程序设置”页中,选择 “应用程序类型”下的 “DLL”(如果可用),或者选择 “控制台应用程序”(如果 “DLL”不可用)。 某些版本的 Visual Studio
不支持通过使用向导创建 DLL 项目。您可以稍后对此进行更改,以将项目编译为
DLL。
在 “Win32 应用程序向导”的 “应用程序设置”页中,选择 “附加选项”下的 “空项目”。
单击 “完成”创建项目。
向动态链接库添加类
若要为新类创建头文件,请从 “项目”菜单中选择 “添加新项…”。
将显示 “添加新项”对话框。
在 “类别”窗格中,选择 “Visual C++”下的 “代码”。 在 “模板”窗格中选择 “头文件(.h)”。 为头文件选择一个名称,如
MathFuncsDll.h,并单击 “添加”。 将显示一个空白文件。
添加一个名为“MyMathFuncs”的简单类,以执行常见的算术运算,如加、减、乘和除。代码应与以下内容类似:
以带有颜色区分的格式查看复制到剪贴板打印
// 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);
};
}
// 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);
};
}
请注意此代码方法声明中的 __declspec(dllexport) 修饰符。 这些修饰符使 DLL
能够导出该方法以供其他应用程序使用。有关更多信息,请参见 dllexport, dllimport。
若要为新类创建源文件,请从 “项目”菜单中选择 “添加新项…”。
将显示 “添加新项”对话框。
在 “类别”窗格中,选择 “Visual C++”下的 “代码”。 在 “模板”窗格中,选择 “C++ 文件(.cpp)”。 为源文件选择一个名称,如
MathFuncsDll.cpp,并单击 “添加”。 将显示一个空白文件。
在源文件中实现“MyMathFuncs”的功能。代码应与以下内容类似:
以带有颜色区分的格式查看复制到剪贴板打印
// 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.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;
}
}
若要将项目生成为 DLL,请从
“项目”菜单中选择
MathFuncsDll “属性...”。 在左窗格中,选择 “配置属性”下的 “常规”。
在右窗格中,将 “配置类型”更改为 “动态库(.dll)”。
单击 “确定”保存更改。
说明
如果您从命令行生成项目,请使用
/LD 编译器选项指定输出文件应为 DLL。
有关更多信息,请参见 /MD、/MT、/LD(使用运行库)。
编译该动态链接库,方法是选择
“生成”菜单中的 “生成解决方案”。
这样就创建了一个可供其他程序使用的
DLL。
展开全部
新建win32项目,dll,然后把你的类(可以不写类),函数声明及实现,都写进去,可以用extern "C" 指定为标准C语言调用,_declspec(dllexport),或者使用def文件来导出你的函数,导出的函数均可以避免编译器改变函数名。这样,其它语言可以直接调用函数了,当然,有些情况下,其它语言可能无法调用,比如,C语言调用C++ DLL时,bool型可能会出错,又如,C++中的引用,在C语言中是无法使用的,只能用指针来实现。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询