| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 307 人关注过本帖
标题:[求助]DLL编写的不能被软件引用,引用软件就销毁
只看楼主 加入收藏
csnpx
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-27
结帖率:0
收藏
 问题点数:0 回复次数:1 
[求助]DLL编写的不能被软件引用,引用软件就销毁

// LyFnc.cpp : Defines the entry point for the DLL application.
/*
///////////////////////////////////////////////////////////////////////////
利鹰扩展函数规范V2.05
1.本规范适用于利鹰2.05公式系统.
2.扩展函数用于实现系统函数不能实现的特殊算法,提高运算速度。
3.扩展函数用windows 32位动态连接库实现,建议使用Microsoft Visual C++编程.
4.调用时在公式编辑器中写"动态库名称@函数名称"(参数表)即可
5.动态连接库名称和函数名称可以自己定义.
6.使用时可以将动态库拷贝到利鹰目录下使用.
*/
#include "stdafx.h"
#include "FncData.h"

extern "C" _declspec(dllexport) int FUN1(LYDATA *pData)
{
int i,n;

if( pData->nParamCount!=2 )
return 0;

i = (int)pData->floParam[0];
n = (int)pData->floParam[1]-1;


int zx1,zx2,zx3,zx4,zx5,zx6,zx7,zx8,zx9,zx10,fx11,fx12,fx13,fx14;

if(i==0)
{
zx1=1; zx2=2; zx3=4; zx4=5; zx5=6; zx6=7; zx7=8; zx8=10; zx9=11; zx10=12; fx11=3; fx12=9; fx13=13; fx14=14;
}
else if(i==1)
{
zx1=2; zx2=4; zx3=5; zx4=6; zx5=7; zx6=8; zx7=9; zx8=10; zx9=13; zx10=14; fx11=1; fx12=3; fx13=11; fx14=12;
}
else if(i==2)
{
zx1=1; zx2=3; zx3=5; zx4=6; zx5=7; zx6=10; zx7=11; zx8=12; zx9=13; zx10=14; fx11=2; fx12=4; fx13=8; fx14=9;
}
else
{
;
}

pData->pfResult = new float[14];


pData->pfResult[0] = (float)zx1;
pData->pfResult[1] = (float)zx2;
pData->pfResult[2] = (float)zx3;
pData->pfResult[3] = (float)zx4;
pData->pfResult[4] = (float)zx5;
pData->pfResult[5] = (float)zx6;
pData->pfResult[6] = (float)zx7;
pData->pfResult[7] = (float)zx8;
pData->pfResult[8] = (float)zx9;
pData->pfResult[9] = (float)zx10;
pData->pfResult[10] = (float)fx11;
pData->pfResult[11] = (float)fx12;
pData->pfResult[12] = (float)fx13;
pData->pfResult[13] = (float)fx14;

*pData->pfResult = pData->pfResult[n];

return 1;
}

////数值转换并调到软件内没问题了,就是不能在软件内把计算结果引用到另一个指标内,引用软件就销毁,如何调整才能不销毁

[此贴子已经被作者于2007-10-19 18:48:38编辑过]

搜索更多相关主题的帖子: DLL 软件 编写 
2007-10-19 18:44
csnpx
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-27
收藏
得分:0 

请教这个的具体的用法及步骤(希望那位老师一步一步的赐教它的用法和编写步骤)先谢谢了!

利鹰扩展函数规范V2.05

1.本规范适用于利鹰2.05公式系统.

2.扩展函数用于实现系统函数不能实现的特殊算法,提高运算速度。

3.扩展函数用windows 32位动态连接库实现,建议使用Microsoft Visual C++编程.(vc6、vc7测试通过)

4.调用时在公式编辑器中写"动态库名称@函数名称"(参数表)即可,例如下面函数可以写为"LFUNC@CS"(5,1,0)

5.动态连接库名称和函数名称可以自己定义.

6.使用时必须将动态库拷贝到利鹰目录下使用.


以下是接口的几个数据结构

//彩票数据

typedef struct tagLYCPDATA

{

int nNum[101];//0: 特别号号码数字 1-99: 基本号位数字 100: 期数

} LYCPDATA;


//彩票类型信息

typedef struct tagLYCPINFO

{

char *pcharCpName;//彩票名字

int nType;//0:传统式 1:乐透式 2: 组合式


int nBaseNum;//基本号位数

int nBaseMax;//基本号最大数字

int nBaseMin;//基本号最小数字


int nSpecialNum;//特别号位数,只能是0或1。

int nSpecialMax;//特别号最大数字 <99

int nSpecialMin;//特别号最小数字 >=0


int nDataCount;//当前彩票历史数据总量,

int nPData;//当前彩票数据在历史数据中的位置,以0开始;如nPData=99,就表示nNum代表的是第100期开奖数据数据


int nExInfo[10];//系统保留

char *pcharInfo[10];//系统保留

} LYCPINFO;


//参数信息,就是调用这个dll,系统传递的信息

typedef struct tagLYDATA

{

const LYCPINFO *pCpInfo;//当前彩票类型

const LYCPDATA *pCpData;//当前彩票历史数据


const int nParamCount;//有效参数个数

const float floParam[10];//数字类型参数

const char *pcharParam[10];//字符串类型参数

const int nParamType[10];//参数类型 0:数字有效 1:字符串有效


float *pfResult;//返回数字

char charResult[1024];//返回字符串


int nExData[105];//系统保留

char *pcharExData[105];//系统保留

} LYDATA;


以下是函数输出规范

/* 函数输出


extern "C" _declspec(dllexport) int xxxxxxxx(CLYDATA* pData); ---------- A

extern "C" _declspec(dllexport) int xxxxxxxxSTR(CLYDATA* pData); ---------- B


1.函数名称需全部大写.

2.函数必须以上述A,B两种形式之一声明,请用实际函数名称替代xxxxxxxx;

对于C++程序还需包括在 extern "C" { } 括号中.

3.上述形式A用于声明返回值为数字的函数;

形式B用于声明返回值为字符串的函数;两种函数的区别在于后者以STR结尾.

4.函数计算数字结果用pData->pfResult带回;

字符串结果由pData->pcResult带回,字符串长度不能超过100字节

5.函数返回0表示错误或数据无效,否则返回非1;

6.函数名称长度不能超过15字节,动态连接库文件名不能超过9字节(不包括扩展名),动态库名称不能叫SYSTEM,EXPLORER

7.编译时请请选择1字节对齐


*/

2007-10-19 18:45
快速回复:[求助]DLL编写的不能被软件引用,引用软件就销毁
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012493 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved