最近对一些旧案子进行规整,发现很多dll都是句柄类等导出类。
归纳了一下:
1,类结构相同或者类似;
2,程序语言是C++,VC6编译;目前程序主体对这些DLL的调用繁多而且散乱,这对于程序的整体结构相当不利。所以想借用C#的思想,对这些类归纳建立一个namespace的类库,程序主体直接using namespace就可以了。现在的问题是:
以前是使用直接dllexport出去这些类,程序主体dllimport其lib等即可。而现在使用namespace建立的dll却不知该如何导出与被引用?PS:
1,我直接#import "a.dll"缺是不行的。
2,程序主体是VC程序而不是.net程序。
归纳了一下:
1,类结构相同或者类似;
2,程序语言是C++,VC6编译;目前程序主体对这些DLL的调用繁多而且散乱,这对于程序的整体结构相当不利。所以想借用C#的思想,对这些类归纳建立一个namespace的类库,程序主体直接using namespace就可以了。现在的问题是:
以前是使用直接dllexport出去这些类,程序主体dllimport其lib等即可。而现在使用namespace建立的dll却不知该如何导出与被引用?PS:
1,我直接#import "a.dll"缺是不行的。
2,程序主体是VC程序而不是.net程序。
namespace xyz
{
class abc
{
};
}使用:
1.
xyz::abc2.
using namespace xyz;
abc
abc;
或
xxx::abc;
我最主要的思想是统一对外接口而已...
2.定义要导出的类,使用class AFX_EXT_CLASS CDemoClass方式类定义类。
3.使用namespace来定义命名空间.如
namespace Demo
{
class AFX_EXT_CLASS CDemoClass
{
...
};
}使用的话,方法和常规的一致.
1.#include "xxx.h"
#pragma comment(lib, "xxx.lib")2.命名空间::类
Demo::CDemoClass dc;
dc.function.
#pragma once
namespace Deom
{
class AFX_EXT_CLASS x
{};
}.cpp
#include ".h"
namespace Deom
{
x::x()
{
}
x::otherfunction()
{
}
}
加一个delayload的开关 就不会一开始就全加载