<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>空雪小屋 &#187; 伪春菜</title>
	<atom:link href="http://blog.sorayuki.net/?cat=5&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.sorayuki.net</link>
	<description>现在域名是 blog.sorayuki.net ~</description>
	<lastBuildDate>Tue, 29 Nov 2022 08:27:41 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
	<item>
		<title>伪春菜SAORI的编写</title>
		<link>http://blog.sorayuki.net/?p=9</link>
		<comments>http://blog.sorayuki.net/?p=9#comments</comments>
		<pubDate>Tue, 11 Sep 2012 07:16:33 +0000</pubDate>
		<dc:creator><![CDATA[空雪梦见]]></dc:creator>
				<category><![CDATA[伪春菜]]></category>

		<guid isPermaLink="false">http://leiming.vicp.cc/blog/?p=9</guid>
		<description><![CDATA[网上关于伪春菜的资料真的好难找啊＞＜ 用户群不够大的样子……然后好多还是日语的 SAORI可以认为是SHIOR &#8230; <a href="http://blog.sorayuki.net/?p=9" class="more-link">继续阅读<span class="screen-reader-text">伪春菜SAORI的编写</span> <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>网上关于伪春菜的资料真的好难找啊＞＜</p>
<p>用户群不够大的样子……然后好多还是日语的</p>
<p>SAORI可以认为是SHIORI的插件，SHIORI是控制人格执行的程序，通常这个程序只提供了一个脚本语言解释器（比如YAYA），更加具体的功能由这些脚本来完成。这种脚本、解释器分离的模型为更改程序提供了方便。如果每次更改都要重新编译整个SHIORI，这就太“GEEK体验”了。我们要的是“用户体验”XD <span id="more-9"></span></p>
<p>SAORI可以协助SHIORI完成一些脚本做不到的功能。SHIORI不能提供用户所需功能的时候，就需要调用外部的SAORI来完成。SAORI通常是一些DLL，这就提供了非常大的灵活性：因为可以用C语言或者C++语言来编写DLL，编写过程中还可以调用例如系统API之类的函数。</p>
<p>关于SAORI的编写，虽然它给出的流程并不是很复杂，load、unload、request三个函数：</p>
<blockquote><p>extern "C" __declspec(dllexport) HGLOBAL __cdecl request(HGLOBAL h, long *len);<br />
extern "C" __declspec(dllexport) BOOL __cdecl load(HGLOBAL h, long len);<br />
extern "C" __declspec(dllexport) BOOL __cdecl unload();</p>
<p>（来源： <a href="http://www.boreas.dti.ne.jp/~sdn/saori.html" target="_blank">http://www.boreas.dti.ne.jp/~sdn/saori.html</a> ）</p></blockquote>
<p>但是光是分析字符串，就有点小累人。在网上找了一圈以后，找到了别人写好的现成的框架代码：</p>
<blockquote><p><a href="http://code.google.com/p/csaori/" target="_blank">http://code.google.com/p/csaori/</a></p></blockquote>
<p>CSAORI那个下载就是框架。把很多东西都做好了，自己只要实现3个成员函数就可以了。其中有一个exec函数的接口十分整洁：分析过的Input部分和自己为每个成员赋值的Output部分。前后的处理工作都由框架负责完成。</p>
<p>这样的话编写SAORI的工作，特别是编写简单的SAORI的工作，就会轻松很多:VS里开一个DLL工程，把csaori.cpp加入到工程里面，新建一个源代码文件，把csaori.h给include进去，实现一下CSAORI类里面的load，unload和exec函数，大功告成。记得在exec里面设定Output的返回值~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sorayuki.net/?feed=rss2&#038;p=9</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
