基本情况:
我是用图表指标逐K线调用VBS,VBS主要用Gethistorydata取5s数,给C++,复杂的逻辑计算放在C++里头。同时C++里头拟调用数据库 SQlite。
这么做的原因是,模型不成熟,最好还是用图表可以观察观察。同时因为计算量大,所以之前VBS+access的效率不可用,所以想挪到C++里,也换轻型的内存数据库 SQlite。同时也可以利用VBS的Order之类的,以后换成Adi,或者DLL改动也少。
测试环境:
WIN7 64位,VS2008+SP1,Debug 32,金字塔 2.962可调试版本
程序如下:
PEL: R_INIT:= INIT_1(1540);
VBS:
Function INIT_1(Formula,N)
INIT_1=0
Set Grid = Formula.ParentGrid
Set History = Grid.GetHistoryData
daysnumber = DateDiff("d", #1/1/1970# , History.date(0) )
time_temp = right(History.date(0),8)
timesnumber = 60*60*hour(time_temp)+ 60* minute(time_temp) + second(time_temp)
date_5s = daysnumber
time_5s = timesnumber
open_5s = History.open(0)
close_5s = History.close(0)
high_5s = History.high(0)
low_5s = History.low(0)
date_1m = daysnumber ‘一分钟与5分钟暂用5秒的代替
time_1m = timesnumber
open_1m = History.open(0)
close_1m = History.close(0)
high_1m = History.high(0)
low_1m = History.low(0)
date_5m = daysnumber
time_5m = timesnumber
open_5m = History.open(0)
close_5m = History.close(0)
high_5m = History.high(0)
low_5m = History.low(0)
Set MyAddin = CreateObject("MyActiveXDemo.VBSAddin")
call MyAddin.INIT_1(date_5s,time_5s,open_5s,close_5s,high_5s,low_5s,date_1m,time_1m,open_1m,close_1m,high_1m,low_1m,date_5m,time_5m,open_5m,close_5m,high_5m,low_5m)
End Function
C+:
float VBSAddin::INIT_1(long Date_5s, long Time_5s, float Open_5s, float Close_5s, float High_5s, float Low_5s, long Date_1m, long Time_1m, float Open_1m, float Close_1m, float High_1m, float Low_1m, long Date_5m, long Time_5m, float Open_5m ,float Close_5m, float High_5m, float Low_5m)
{
sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;
//打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
rc = sqlite3_open("test1.db", &db);
if(rc)
{
fprintf(stderr, "Can’t open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return (1);
}
else
printf("You have opened a sqlite3 database named Winstock.db successfully!\n");
return 0.0f;
}
问题,是只要加了rc = sqlite3_open("test1.db", &db); 附加进程调试的断点,就进不去了,同时还有OLE异常错误,如下图
而,我没有OLE的单独的sqlite测试是没问题的。
自己用try catch也没找到错误,请大哥们帮忙看看
此主题相关图片如下:1.gif

我附上VC的包, 太大了 ,我可以发邮件
江湖救急,多谢了!