0

我试图在 Haxe 中使用 Windows API 来创建一个 Windows 应用程序。我已经使用 ndlls 和 Haxe/Neko 完成了这项工作。我尝试使用 cpp 目标执行此操作,其中我使用 Haxe 2.09 中的新宏功能将 C++ 代码嵌入到 Haxe 文件中。但是,一旦我包含windows.h它就会出现错误

./src/Main.cpp(79) : error C2039: 'RegisterClassA' : is not a member of 'hx'
./src/Main.cpp(81) : error C2660: 'RegisterClassA' : function does not take 9 arguments
Called from ? line 1
Called from BuildTool.hx line 1246
Called from BuildTool.hx line 554
Called from BuildTool.hx line 591
Called from BuildTool.hx line 710
Called from BuildTool.hx line 785
Uncaught exception - Error in building thread
Error : Build failed
Build halted with errors (haxe.exe).

这是我的代码 -

import cpp.Lib;

@:headerCode("#include <windows.h>")// if i comment this line or replace windows.h with another standard header file like iostream, the error goes

class Main 
{
     static function main() 
     {
           //no code here   
     }
}

事实上,如果我用windows.hWindows 或 DirectX SDK 中的任何头文件替换,我在使用 Haxe 2.09 和 FlashDevelop 时会遇到同样的错误。我使用的是 Windows 7。我也在使用最新版本的 hxcpp(2.09 版)。

4

1 回答 1

2

看起来像是<windows.h>#defining RegisterClassto RegisterClassA(自动魔术Unicode支持的一部分)。

因为这是通过 text-prepropcessor 宏完成的,所以任何具有名为符号的代码RegisterClass(就像 BuildTool 的情况一样)都会自动将其替换RegisterClassA为.

试试这个:

@:headerCode("#include <windows.h>")
@:headerCode("#undef RegisterClass")

您可能需要对其他冲突执行类似的操作。另请参阅此问题

于 2012-04-16T03:03:14.360 回答