我是 ChaiScript 的初学者。
我尝试std::wstring
在 ChaiScript 中使用类型。
std::string 类型效果很好。
#include <iostream>
#include <chaiscript/chaiscript.hpp>
#include <chaiscript/chaiscript_stdlib.hpp>
int main()
{
chaiscript::ChaiScript chai(chaiscript::Std_Lib::library());
std::cout << chai.eval<std::function<int (std::string)> >(
"fun(s){"
" if(s==\"aaa\"){"
" print(\"1\");"
" }"
" if(s[1]=='b'){"
" print(\"2\");"
" }"
" return 3;"
"}"
)(std::string("abcd"));
}
D:\TestWork\test_chaiscript>t1.exe
2
3
std::wstring
类型引发异常。
#include <iostream>
#include <chaiscript/chaiscript.hpp>
#include <chaiscript/chaiscript_stdlib.hpp>
int main()
{
chaiscript::ChaiScript chai(chaiscript::Std_Lib::library());
std::cout << chai.eval<std::function<int (std::wstring)> >(
"fun(s){"
" if(s==\"aaa\"){"
" print(\"1\");"
" }"
" if(s[1]=='b'){"
" print(\"2\");"
" }"
" return 3;"
"}"
)(std::wstring(L"abcd"));
}
D:\TestWork\test_chaiscript>t2.exe
在抛出 'chaiscript::exception::eval_error'
what() 的实例后调用终止:错误:“找不到合适的 '==' 运算符。” 带参数:(NSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEE, const string)此应用程序已请求运行时以不寻常的方式终止它。
请联系应用程序的支持团队以获取更多信息。
使用 ChaiScript git 版本和 mingw-w64 构建 5.1.0。
g++ t2.cpp -std=c++14 -O2 -Os -Wall -mthreads -o t2.exe -DWIN32 -D_WIN32 -DUNICODE -D_UNICODE -Id:\myprj\chaiscript_git\include -static-libstdc++ -static-libgcc -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic
vs2013也是一样。
如何std::wstring
在 ChaiScript 中使用类型?