本来是一个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>

解决方案 »

  1.   

    Let's up, I collect this question.
      

  2.   

    在什么地方引用了afxv_w32.h.错误提示是windows.h不能重复被include.
      

  3.   

    1.不要导出类
    2.导出函数或变量不要有MFC的类,而只能有Windows的数据类型
    3.导出函数都写成extern "C" TYPE WINAPI MyFun(...)
    不要包含windows.h
      

  4.   

    第一,不能用类!
    第二,需要在函数前加 extern "C" 
    第三,如果要给Delphi用需要自己定义.def文件来倒出函数名你上面的问题是 重复定义的 windows.h 这个头文件!
    查一查吧!
      

  5.   

    .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"不包含这两个文件就能编译
      

  6.   

    to ancienttale(voidman):
    不包含windows.h,windows api函数怎么用啊?
      

  7.   

    #include <afxv_w32.h>
    #include <windows.h>把 windows.h 放在后面
      

  8.   

    我没用这个#include <afxv_w32.h>
      

  9.   

    .导出函数都写成extern "C" TYPE WINAPI MyFun(...)
        extern "C" __declspec(dllexport)
    用哪个?
      

  10.   

    对阿, 
       你自己都回答了你的问题, 你要的是标准的DLL,就不能包含
    #include "stdafx.h", 它是包含MFC的头文件的,而MFC已包含了
    windows.h 当然要报错了
       呵呵
      

  11.   

    重新建一个win32 dll~
    然后往里考代码呢?
    如果不多的话~
    然后自己定义好def文件之类的~
      

  12.   

    请帮我解释!
    extern "C" __declspec(dllexport) 导出 ?
    extern "C" __declspec(dllimport) 导入 ?
    extern "C"  有什么用?
    WINAPI 和 _stdcall 有什么区别?
      

  13.   

    WINAPI 和_stdcall无区别!!导出函数都写成extern "C" TYPE WINAPI MyFun(...)#if defined(_cplusplus)
     extern "C"
      {
    #endifTYPE WINAPI MyFun(...)#if defeined(_cplusplus)
       }
    #endif你可建立一标准得 MFC DLL ,DEPHI一样可以调用啊!!!MFC REGUAL DLL
      

  14.   

    哎!平时积累这方面的知识太少了
    extern "C" __declspec(dllexport) ,我现在是这样写的,可以吗?
      

  15.   

    1. 看看"stdafx.h"、"CircleQueue.h"这两个头文件中或包括的其他头文件中有没有定义“_WINDOWS_”,或者Project Setting中是否有预定义“_WINDOWS_”.
    2.extern "C" 使C++编译器使用C的命名规范,但不能用于类成员函数。
    3.WINAPI 和 _stdcall 一样。
      

  16.   

    楼上费心了,那个问题我找到了
    问题出在这里#include <afxmt.h>
    多谢!
      

  17.   

    可以解释一下吗?
    你不是说你没写#include <afxmt.h>吗?
    为什么?
      

  18.   

    <afxmt.h>这是个包含MFC类的库,他包含了windows.h,所以。。
      

  19.   

    帮我看看这对不对?              是否可以导出类           是否可以被非MFC程序使用
    WIN32 dll          否?                         是
    MFC Regular        是?                         是
    MFC Extension      是                           否
      

  20.   

    extern "C" __declspec(dllexport) TYPE WINAPI MyFun(...)
      

  21.   

    是否可以导出类           是否可以被非MFC程序使用
    WIN32 dll          否                           是
    MFC Regular        是                           是
    MFC Extension      是                           否
    应该是的.
      

  22.   

    找本有关DLL的书看看吧!那样你才会获得系统的认识!