本来是一个MFC ext dll(支持导出类的那种)现在要改写成 标准win32 dll 以函数的形式导出 给Dephi程序用,怎么办啊?
添加头文件就出错,afxv_w32.h(14) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
添加头文件就出错,afxv_w32.h(14) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
2.导出函数或变量不要有MFC的类,而只能有Windows的数据类型
3.导出函数都写成extern "C" TYPE WINAPI MyFun(...)
不要包含windows.h
第二,需要在函数前加 extern "C"
第三,如果要给Delphi用需要自己定义.def文件来倒出函数名你上面的问题是 重复定义的 windows.h 这个头文件!
查一查吧!
#if !defined(AFX_CIRCLEQUEUE_H__12E7EB77_E568_4A29_9166_E9590CB33629__INCLUDED_)
#define AFX_CIRCLEQUEUE_H__12E7EB77_E568_4A29_9166_E9590CB33629__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <afxmt.h>.cpp
#include "stdafx.h"
#include "CircleQueue.h"不包含这两个文件就能编译
不包含windows.h,windows api函数怎么用啊?
#include <windows.h>把 windows.h 放在后面
extern "C" __declspec(dllexport)
用哪个?
你自己都回答了你的问题, 你要的是标准的DLL,就不能包含
#include "stdafx.h", 它是包含MFC的头文件的,而MFC已包含了
windows.h 当然要报错了
呵呵
然后往里考代码呢?
如果不多的话~
然后自己定义好def文件之类的~
extern "C" __declspec(dllexport) 导出 ?
extern "C" __declspec(dllimport) 导入 ?
extern "C" 有什么用?
WINAPI 和 _stdcall 有什么区别?
extern "C"
{
#endifTYPE WINAPI MyFun(...)#if defeined(_cplusplus)
}
#endif你可建立一标准得 MFC DLL ,DEPHI一样可以调用啊!!!MFC REGUAL DLL
extern "C" __declspec(dllexport) ,我现在是这样写的,可以吗?
2.extern "C" 使C++编译器使用C的命名规范,但不能用于类成员函数。
3.WINAPI 和 _stdcall 一样。
问题出在这里#include <afxmt.h>
多谢!
你不是说你没写#include <afxmt.h>吗?
为什么?
WIN32 dll 否? 是
MFC Regular 是? 是
MFC Extension 是 否
WIN32 dll 否 是
MFC Regular 是 是
MFC Extension 是 否
应该是的.