为了实现DLL中的数据共享,搜了很久,因为只想使用win32格式的编译文件,但是GoLink却没有提供对数据段属性的设置功能,而其它的开源链接器功能都较弱,所以只好又找来微软自家的链接器Incremental Linker,可使用的选项确实很多,不过要使用此链接器链接nasmx编译的文件还需要找来动态链接库的lib库文件,还有就是需要使用/entry:选项,注意这里要使用/entry:main来指定Dll的入口点,而在Golink中要使用/entry _main来指定Dll的入口点。而且在链接后会出现一条链接提示:example1701.dll : warning LNK4086: entrypoint "_main" is not __stdcall with 12 bytes of arguments; image may not run,不必理会。如果大家发现其它更好的开源链接器,请告诉我一声,谢谢了!呵呵。
完整的链接命令类似下面这样:
link /subsystem:windows /entry:main /section:.bss,S /dll example.obj kernel32.lib user32.lib