一个奇怪的问题
我建立了一个简单的dll工程,包括三个文件:stdafx.h;stdafx.cpp;YJDllTest.cpp。这些文件都很简单,其中stdafx.h文件的内容如下:
#pragma once
#ifndef WINVER
#define WINVER 0x0501
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#ifndef _WIN32_WINDOWS
#define _WIN32_WINDOWS 0x0410
#endif
#ifndef _WIN32_IE
#define _WIN32_IE 0x0600
#endif
#define WIN32_LEAN_AND_MEAN
// Windows 头文件:
#include <windows.h>
stdafx.cpp文件只有一行:
#include "stdafx.h "
在YJDllTest.cpp文件中,我引入了一个库的头文件YJPrintLib.h,如下:
#include "stdafx.h "
#include "YJPrintLib.h "
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
头文件YJPrintLib.h的内容为:
#ifndef YJPRINTLIB_H_
#define YJPRINTLIB_H_
//错误代码定义
//常用错误代码定义
#define YJLIB_S_OK0x00000000
#define YJLIB_S_FALSE0x00000001
#define YJLIB_E_FAILURE0xFFFFFFFF
#define YJLIB_E_UNKNOWN0xFFFFFFFE
#ifdef _cplusplus
extern "C " {
#endif
#ifdef YJ_DLL_EXPORT
#define YJ_DLL_API(A) __declspec(dllexport) A __stdcall
#else
#define YJ_DLL_API(A) __declspec(dllimport) A __stdcall
#endif
YJ_DLL_API(BOOL) IsYJServiceExist(BOOL bFaked = FALSE);
YJ_DLL_API(DWORD) InitYJLib(BOOL bFaked = FALSE);
YJ_DLL_API(DWORD) UninitYJLib(BOOL bFaked = FALSE);
YJ_DLL_API(DWORD) SubmitProc(LPCTSTR lpszFilePath, DWORD* pdwProcId, BOOL bFaked = FALSE);
YJ_DLL_API(DWORD) CancelProc(DWORD dwProcId, BOOL bFaked = FALSE);
#ifdef _cplusplus
}
#endif
#endif
如果这样的话,编程出现问题,说BOOL和DWORD没有定义。明明在windows.h中的windef.h有定义,但为什么说没有呢?
但是,将#include "YJPrintLib.h "从YJDllTest.cpp文件中移到stdafx.h文件中的最后一行,编译就通过。
不知道为什么会出现这种情况,望大虾们指教!
[解决办法]
以后细心地就好了
[解决办法]
。。。。。LZ太不小心了
JF阿,呵呵
[解决办法]
我想问下为何用YJ这个代号,不方便说的话可以发我短信,因为我以前做的一个项目也用YJ,不知道是不是巧合。
[解决办法]
define太多了,根本就不知道哪些define会被屏蔽了
对于这个问题,我觉得只能用条件编译了,除此以外我没有什么好的办法,不知道各位是怎么处理的,请高手们多多指点阿!!