我正在使用G-WAN 4.11.20
init.c
#pragma link "mono-2.0"
#pragma include "/home/igor/Projects/gwan_linux64-bit/mono-3.0.2"
#include "gwan.h" // G-WAN API
#include <mono/metadata/metadata.h>
#include <mono/metadata/loader.h>
#include <mono/metadata/object.h>
static MonoString* Sample ()
{
return mono_string_new (mono_domain_get (), "Hello!");
}
int main(int argc, char *argv[])
{
mono_add_internal_call("Gwan::Sample", Sample);
return 0;
}
gwan_api.cs
public class Gwan
{
[MethodImplAttribute(MethodImplOptions.InternalCall)]
extern public static string Sample();
}
gwan从断言开始:
ghashtable.c:236:断言'hash!=NULL"失败的
在调用脚本之后,我遇到了同样的问题。
Unhandled Exception: System.MissingMethodException: Cannot find the requested method.
at (wrapper managed-to-native) Gwan:Sample ()
at hello2.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.MissingMethodException: Cannot find the requested method.
at (wrapper managed-to-native) Gwan:Sample ()
at hello2.Main (System.String[] args) [0x00000] in <filename unknown>:0
我的感觉是我没有正确配置mono,有什么建议吗?
与main.c
(维护脚本)不同,init.c
脚本必须终止,G-WAN服务器才能开始侦听。
由于init.c
代码是在执行后发布的,这使得它不适合存储持久代码,而持久代码本应由G-WAN servlet调用,以构建客户端请求的动态内容。
使用main.c
或G-WAN连接处理程序可能会有更多机会。
您必须为您想要从C#脚本支持的任何新的G-WAN API(或外部函数)实现C#包装器。
请参阅Gwan C#,如何获取HTTP头?