nttz 发表于 2012-10-7 21:42:39

可否制作个函数通用的模板,以对话框的形式填写函数名,返回类型,参数个数,类型,然后确认后由用户自己去实现,并把实现的文件通过程序自动打包入库,成为库的成员

nttz 发表于 2012-10-7 21:44:47

主程序只是负责收集文本然后交给编译器,然后写lib

nttz 发表于 2012-10-7 21:48:11

这样开发人员以后写库就有了个平台了,不需要动主程序了,相当于函数ide环境,同时在公式脚本中很容易调用他们,以前都是调用dll,由主程序解释运行

ktdev 发表于 2012-10-20 19:14:28

如何调用.net dll 请参考
http://www.hs633.com/forum.php?mod=viewthread&tid=805#lastpost

ptLibert 发表于 2012-10-23 11:00:06

本帖最后由 ptLibert 于 2012-10-23 13:27 编辑

往DLL传递数组.
公式代码:extern 'FoxFunc.dll'  void  pass_array(NumericArray params, NumericArray result);
extern 'FoxFunc.dll'  void  pass_array2(NumericArray params, NumericArray result);

array:params(1),result(0);
//ad:close;
//if (BARPOS == DATACOUNT) then begin
   
        pass_array2(params, result);
        for i = 0 to 9  do  begin
                print(result);
        end
//endDLL的c 源码
例1/** 传递数组,参数里的值可以改变
//使用
extern 'FoxFunc.dll'  void  pass_array(NumericArray params, NumericArray result);
array:params(1),result(0);
pass_array(params, result);
*/
extern "C" __declspec(dllexport) void WINAPI pass_array( double* params, double* result)
{
        for (int i = 0; i < 10; i++)
                result = params + i;
}
例2/** 传递数组,参数里的值可以改变
//使用,和上例一样,公式里声明都使用NumericArray,只是在实现时dll函数声明用double params,
//推荐使用这种方式实现传递数组函数,明确声明了数组维度,注意往数组写数据不能超过公式里数组声明的大小,
//否则可能会导致金魔方软件意外 终止。
extern 'FoxFunc.dll'  void  pass_array2(NumericArray params, NumericArray result);
array:params(1),result(0);
pass_array2(params, result);
*/
extern "C" __declspec(dllexport) void WINAPI pass_array2(double params, double result)
{
        for (int i = 0; i < 10; i++)
                result = params + i;
}

nttz 发表于 2012-10-23 14:00:17

array:params(1),result(0);

后面的(1) (0)是什么意思

ptLibert 发表于 2012-10-23 14:14:42

是初始化成1,和0

bt11 发表于 2012-10-23 14:15:29

赋初值
array:params(1)表示这个数组里的值都赋值为1.

ptLibert 发表于 2012-10-23 14:15:39

nttz 发表于 2012-10-7 21:44 static/image/common/back.gif
主程序只是负责收集文本然后交给编译器,然后写lib

这个难度很高啊。。。等于要开发一个dll编译器了

朝天椒 发表于 2012-10-28 21:16:06

好高深啊!
页: 1 2 3 [4] 5 6 7 8 9 10
查看完整版本: 金魔方DLL接口