今天在帮同事弄DLL导出的函数的时候,发现一个问题,因为他之前的函数有重载,我原计划希望他原来所有的函数都不动,
而重载的函数都新建一个函数代替使用到,这样既保持了向下兼容向上扩展,例子如下:
void Func1(int )
void Func1(const char* )
Func1 和Func1 是一对重载函数,我打算新建一个函数
void Func1_New(const char* data) {
return Func1(data);
}
我就将Func1 和Func_New进行导出
编译是没有问题的,但是在link的时候编译器总是报告一个错误,未找到Func1的定义,
刚开始总是想不通,后来我想了想由于函数Func1 重载了,在导出Func1的函数的时候,编译器不能识别需要导出Func1具体是哪个函数,
因为我导出的函数名称是抹除了C++命名粉碎,如果支持C++命名粉粹的情况下是可以导出的