如果你打算写给C#/VB.net用的DLL,那么你需要:
1.一个命名空间,因为C#和VB均不能识别全局命名空间中的类
2.一个托管类,因为C#和VB均不能识别全局函数
3.在托管类中声明托管方法,可以是静态的
4.不需要 __declspec(dllexport) ,因为类成员信息已经内嵌于程序集中,不需要”导出“
比如这样:
namespace DLL
{
using namespace System;
using System::Runtime::InteropServices::Marshal;
public ref class Logger
{
private:
IntPtr packageNameStr;
PackageIDs packageID;
public:
Logger(PackageIDs id, String^ name)
: packageID(id), packageNameStr(Marshal::StringToCoTaskMemAnsi(name))
{
}
~Logger()
{
Marshal::FreeCoTaskMem(packageNameStr);
}
void EnableLogging(String^ logFilePath, LogLevel filter, LogOption options, unsigned long maxSize, bool archive);
void DisableLogging(String^ logFilePath);
};
}