GameMaker Studio,从Windows DLL创建异步事件

时间:2016-11-02 09:03:03

标签: c++ dll game-maker gml

我正在尝试从Windows上的DLL启动社交异步事件

在底部有一个教程here

我不明白的是以下

  

加载扩展程序后,此回调应立即触发   并通过指向四个函数的指针传递。

我想我应该从GML调用函数(RegisterCallbacks),因为回调被定义为dllexport。

这是回调函数

function(q, b, Data1, Data2){
  qseq <- (1:12) + q   # Replaces all "q+1", "q+2", ... , "q+12"

  dat1 <- Data1[qseq, b]  # Replaces all "Data1[q+1, b]", ... "Data1[q+12, b]"
  dat2 <- Data2[qseq, 1]  # Replaces all "Data2[q+1, 1]", ... "Data2[q+12, 1]"

  mean( Data1[13+q, b]/dat1 > Data2[13+q, 1]/dat2 )

但是我应该如何从GML传递指向“CreateAsynEventWithDSMap”的指针?我从哪里获得这些功能?

1 个答案:

答案 0 :(得分:1)

老问题,但我最近自己遇到了这个问题,花了几天时间摸不着头脑,所以我想我会把答案记录下来。

首先,DLL中的RegisterCallbacks函数需要__declspec(dllexport)以及extern&#34; C&#34;,就像导出到GM的任何其他函数一样。

其次,RegisterCallbacks函数也应该在GM中定义,而不仅仅是在C / C ++文件中,再次与扩展中的任何其他导出函数一样。这四个参数应该定义为字符串类型。它应该如下所示:http://i.imgur.com/pppbsWa.png

现在,RegisterCallbacks应该在你开始游戏时自动激活,并且DsMap函数可以执行异步工作。不要尝试手动调用RegisterCallbacks()。