我在 C++ 中继承了一个旧的 DLL 项目。它使用 VS 6.0 编译。
这是多年来一直在工作的事情。
我在构建项目时注意到的第一件事是一些通常与缺少分号有关的警告,但事实并非如此,请看一下:
头文件中的警告:
someproject\include\somefile.h(27) : warning C4518: '__declspec(dllexport) ' : storage-class or type specifier(s) unexpected here; ignored
代码:
#ifdef __cplusplus
extern "C" {
#endif
VOID DLLExport WINAPI func1 (unsigned char *c, SHORT b, BOOL bIsChar, SomeTask* spTask);
VOID DLLExport WINAPI func2 (unsigned char *c, SHORT b, BOOL bIsChar, SomeTask* spTask);
PBYTE DLLExport WINAPI func3 (PBYTE cpStr, BYTE cCh);
SomeTask* DLLExport WINAPI TaskPtr(VOID); // <- Ofending line
cpp 文件中的警告:
someproject\somecode.cpp(3264) : warning C4518: '__declspec(dllexport ) ' : storage-class or type specifier(s) unexpected here; ignored
代码:
extern "C" SomeTask* DLLExport WINAPI TaskPtr(VOID)
{
blah();
blah();
类的代码:
class SomeTask
{
public:
SomeTask(){}
etc