创建和使用托管程序集/动态链接库/静态库
取消预编译头:
默认情况下,创建新项目时,会将它们设置为使用预编译头。若要禁用预编译头,请在“项目”菜单中选择“属性”。展开“配置属性”节点,然后展开“C/C++”节点,并选择“预编译头”。从“创建/使用预编译头”旁边的下拉列表中,选择“不使用预编译头”。
以下1在CLR上运行的代码,2和3为本地C++代码!
1. 创建和使用托管程序集。
添加vc++ CLR类库项目,取消预编译头,CLRAdd.h和CLRAdd.cpp。
CLRAdd.h 代码如下:
#pragma once
using namespace System;
namespace CLRAdd
{
public ref class Math
{
public:
static double Add(double a,double b);
};
}
CLRAdd.cpp代码如下:
#include "stdafx.h"
#include "CLRAdd.h"
namespace CLRAdd
{
double Math::Add(double a, double b)
{
return a+b;
}
}
创建C#控制台程序项目,添加对CLRAdd.dll的引用。可以调用以上Add方法。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(CLRAdd.Math.Add(9.09 , 0.01).ToString());
Console.Read();
}
}
2. 创建和使用动态链接库
创建win32 的dll 空项目,添加Math.h和Math.cpp。
Math.h代码如下:
namespace Math
{
class Maths
{
public:
static __declspec(dllexport) double Add(double a,double b);
};
}
__declspec(dllexport) 修饰符使 DLL 能够导出该方法以供其他应用程序使用
Math.cpp代码如下:
#include "Math.h"
namespace Math
{
double Math::Maths::Add(double a, double b)
{
return a+b;
}
}
创建c++项目,引用以上生成项目,
引用Math.h头文件:项目右键“属性”,“配置属性”à“C/C++”à“常规”中,附加包含目录,输入头文件的地址.
由于动态链接库仅在运行时由可执行文件加载,所以必须知道dll的路径。项目右键“属性”,“配置属性”à“调试”,环境中输入path=<dll的路径>。
#include <iostream>
#include "Math.h"
void main()
{
double d=Math::Maths::Add(6.3,3.6);
std::cout<<d;
system("pause");
}
3. 创建和使用静态库
创建win32的静态库项目,添加Math.h和Math.cpp.
Math.h代码如下:
namespace Math
{
class Maths
{
public :
static double Add(double a,double b);
};
}
Math.cpp文件与使用动态链接库的CPP文件相同。
创建C++win32项目,添加对静态库项目的引用。
需引用Math.h头文件,步骤和应用动态链接库头文件步骤相同。
调用方式同以上动态链接库方法的调用。