查看自由DLL接口规范的源代码
←
自由DLL接口规范
跳转到:
导航
,
搜索
根据下列原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
=DLL公式参数传递例子= *无参数时的例子: // 公式里面的声明与调用 extern 'FoxFunc.dll' void test1(); test1(); // c++ .h 函数声明 __declspec(dllexport) void __stdcall test1(); // c++ .cpp 函数实现 extern "C" __declspec(dllexport) void __stdcall test1() { } *传入单值的公式例子: // 公式里面的声明与调用 extern 'FoxFunc.dll' void test2(int, float, bool, char); Variables: NumericSimple var1, NumericSeries var2, NumericArray var3[10]; var1 := 1; var2[0] := 2; var3[0] := 65; test2(1, 2, 1, 65); test2(var1, var2[0], var1, var3[0]); // c++ .h 函数声明 __declspec(dllexport) void __stdcall test2(int i, float f, bool b, char c); // c++ .cpp 函数实现 extern "C" __declspec(dllexport) void __stdcall test2(int i, float f, bool b, char c) { } *传入字符串的公式例子 公式里面的字符串变量是宽字符,编码是GB2312,DLL里面可以使用MultiByteToWideChar/MultiByteToWideChar进行字符转换 // 公式里面的声明与调用 extern 'FoxFunc.dll' void test3(LPCWSTR); Variables: String var1; var1 := 'test string1'; test3(NumToStr(close,3)); test3('aaa'); test3(var1); // c++ .h 函数声明 __declspec(dllexport) void __stdcall test3(const wchar_t* p); // c++ .cpp 函数实现 #include <string> // 窄字符转宽字符 static std::wstring a2w(LPCSTR lpa) { size_t l = MultiByteToWideChar(936, 0, lpa, -1, NULL, 0); std::wstring s; s.resize(l - 1); MultiByteToWideChar(936, 0, lpa, (int)strlen(lpa), (LPWSTR)s.c_str(), (int)s.size()); return s; } // 宽字符转窄字符 static std::string w2a(LPCWSTR lpw) { size_t l = WideCharToMultiByte(936, 0, lpw, -1, NULL, 0, NULL, NULL); std::string s; s.resize(l - 1); WideCharToMultiByte(936, 0, lpw, (int)wcslen(lpw), (LPSTR)s.c_str(), (int)s.size(), NULL, NULL); return s; } extern "C" __declspec(dllexport) void __stdcall test3(const wchar_t *p) { std::wstring sw = p; std::string sa = w2a(sw.c_str()); } *传入序列的公式例子 // 公式声明与调用 extern 'FoxFunc.dll' void test4(NumericSeries, int, NumericArray, int); Variables: NumericSeries var1, NumericArray var2[5]; var1 := close; var2[1] := 1; var2[2] := 2; var2[3] := 3; var2[4] := 4; var2[5] := 5; //var2 数组实际大小是5+1 test4(var1, BarsCount(close), var2, 6); // c++ .h 声明 __declspec(dllexport) void __stdcall test4(float *pf1, int n1, float *pf2, int n2); // c++ .cpp 函数实现 extern "C" __declspec(dllexport) void __stdcall test4(float *pf1, int n1, float *pf2, int n2) { } *传入引用的公式例子 // 公式声明与调用 extern 'FoxFunc.dll' void test5(NumericRef); Variables: NumericSimple var1; var1 := 3; test5(var1); comment(var1); // c++ .h 声明 __declspec(dllexport) void __stdcall test5(float *pf); // c++ .cpp 实现 extern "C" __declspec(dllexport) void __stdcall test5(float *pf) { *pf = 9; }
返回到
自由DLL接口规范
。
个人工具
内存:18912KB
3.143.7.53
该IP地址的讨论
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
金魔方论坛
下载金魔方
帮助
工具箱
链入页面
链出更改
特殊页面