前几天做数学建模的作业,要用到lingo
而且还是要重复调用lingo 的动态规划
于是在百度上找了下怎么用C++调用lingo,结果
发现是个坑
于是我就陷进去了,弄了两三天才搞清楚,其中
有一天还没睡觉 ……要死了
不过虽然弄明白了,也走了很多弯路,所以要把
一些经验记下来,总结下来
我用的是lingo11破解免安装版、vs2012。
打开lingo安装目录下的Programming Samples文件夹,看到有lingod11.h和lingod11.lib。如果要让c++调用lingo,必须include “lingod11.h”和调用lingod11.lib文件(就是加上这行#pragma comment (lib, "Lingd11.lib")),具体的自己百度,废话不多说
参考 http://wenku.baidu.com/link?url=4uPZs0tb8qZZMBZXskuJ7Y-PqyMXwlwtetxpILVCbBNadDHmmHrmDwr49OFa8JbgVN2lgUmk7BUVlyJRhII8g490dGTP1lJvz-7civWkmme
http://wenku.baidu.com/view/efd21ef8aef8941ea76e05d0.html
当然,你还看到Programming Samples文件夹 下还有很多其他的文件,比如.java的、.cs的.bas的,这说明lingo还提供了其他很多编程环境的
接口文件,不只是c++,如果你有兴趣可以自己
研究lingo提供 的源代码,
注释都是英文的,网上的资料不多,还得靠你自己看 ……
还有一点就是 lingod11.h和lingod11.lib只是提供了lingo函数的调用接口,具体的实现在安装目录下的很多.dll文件里面,所以如果你用的是免安装破解版,就得把所有的.dll文件复制到c++程序的目录下,否则c++是找不到.dll文件的,也就无法调用了
下面简单说说怎么在lingo和c++里写调用的代码
只能传递double类型的数据,工作原理大概是共享一个
内存中的数据区域
在lingo里用@pointer函数把
数据传递给c++或者从C++接受数据
在C++里就复杂一些了,要使用lingod11.h里面定义的 LSsetPointerLng函数实现数据传递。首先要pLSenvLINGO pLINGO;//定义启动lingo的指针。
这里推荐lingo的教程,自己去看
http://pan.baidu.com/s/1pJ8vGSV
度娘云盘下载
如果程序编好,这里就碰到一个最坑爹的问题,你发现怎么都是运行
错误,但是在lingo的UI界面就是可以运行成功。
最后我看了看log文件,原来是
THE MODEL DIMENSIONS EXCEED THE CAPACITY OF THIS VERSION
哈哈哈,原来破解版就是个坑啊,lingo的dll文件根本没有破解,怎么办
到网上找了十几个lingo的
版本,甚至连lingo8这种16位的老版本都被我下载了
最后在csdn找到了真正破解可用的lingo11破解dll,资源宝贵啊,我还是拿来共享了,就在?我 的度娘云盘里
http://pan.baidu.com/s/1pJ8vGSV
大家且行且珍惜吧……
本文章由Android
培训?上海JAVA培训? ?推荐阅读