Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Smalltalk Win32类型引发类型未解析的NBFFICallback_Smalltalk_Pharo - Fatal编程技术网

Smalltalk Win32类型引发类型未解析的NBFFICallback

Smalltalk Win32类型引发类型未解析的NBFFICallback,smalltalk,pharo,Smalltalk,Pharo,我目前正在探索NativeBoost。我想我将从一个简单的事件挂钩开始。为了定义回调,我将NBFFICallback子类化为NBFFICallback,并添加了返回类型为LRESULT的fnSpec fnSpec ^ 'LRESULT ( INT nCode, LPARAM lParam , WPARAM wParam)' 在我使用 mycallback := MyCallback on: someBlock. 这给了我一个无法解析外部类型的错误:atNBFFICallout>>解析

我目前正在探索
NativeBoost
。我想我将从一个简单的事件挂钩开始。为了定义回调,我将NBFFICallback子类化为
NBFFICallback
,并添加了返回类型为
LRESULT
的fnSpec

fnSpec
    ^ 'LRESULT ( INT nCode, LPARAM lParam , WPARAM wParam)'
在我使用

mycallback := MyCallback on: someBlock.
这给了我一个无法解析外部类型的错误:at
NBFFICallout>>解析类型:aTypeName

在这里,我发现类型的绑定是从
请求者
中查找的,它是nil,因此它将从类本身查找,它是
NBNativeFunctionGen
,因此类型不会被解析

不知何故,我相信如果类型被解析,我将能够创建回调,然后将其传递给我的hook函数。我说得对吗

另外,在共享池中引用Win32类型(NBWinTypes)的对象应该以某种方式(不涉及实际的NB代码)作为请求者,并以这种方式解析类型,这样做是否正确

简而言之,如何向回调添加特定类型


谢谢。

我不确定,我手头没有要检查的windows计算机,但这些类型是在NBWinTypes共享池中定义的

因此,我认为您应该在使用ffi调用的类中将其作为poolDictionary包含

Object subclass: #MyClass
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: 'NBWinTypes'
    category: 'NativeBoost-Win32'

我不确定,我手头没有要检查的windows计算机,但这些类型是在NBWinTypes共享池中定义的

因此,我认为您应该在使用ffi调用的类中将其作为poolDictionary包含

Object subclass: #MyClass
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: 'NBWinTypes'
    category: 'NativeBoost-Win32'

谢谢你的回复。请求者是NBNativeFunctionGen的实例,因此除非我在其共享池中添加NBWinTypes,否则我认为它不会有用。否则,我将不得不以某种方式将请求者更改为MyCallback(以某种方式)实例,这样它可能会工作。但我不确定我是否遵循了预期的最佳实践……谢谢你的回复。请求者是NBNativeFunctionGen的实例,因此除非我在其共享池中添加NBWinTypes,否则我认为它不会有用。否则,我将不得不以某种方式将请求者更改为MyCallback(以某种方式)实例,这样它可能会工作。但我不确定我是否遵循了预期的最佳实践。。。。