Zero是一个功能丰富的C++数值计算库,具有复数、向量、矩阵等类,具备求根,拟合,插值,积分,随机数,统计,全局和局部的约束以及无约束优化,常微分方程求解等多项功能。

先下载一份Zero;看一下,有dll,手册,还有libZero.dll.a文件;有gcc的库文件,没有VC++的库文件(lib);

先用VC6调用一下;

先下载一个由DLL生成lib文件的工具,生成lib文件看一下;

生成一个lib文件;

生成一个单文档工程;项目做如下设置;先拷贝lib文件到项目;

Zero.dll拷贝到exe目录;项目要包含zero提供的头文件,下载来就有;

OnDraw函数代码如下;

void CTestzeroView::OnDraw(CDC* pDC)
{CTestzeroDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCString str1;Complex a1,a2,a3;a1.setReal(10.0);a1.setImag(5.0); //虚数,imaginary numbera2.setReal(6.0);a2.setImag(2.0);a3 = a1-a2;str1.Format("a3 is: %f + %f", a3.getReal(), a3.getImag());pDC->TextOut(50,50,str1);
}

然后构建;总是出这个错误;

error LNK2001: unresolved external symbol "public: virtual __thiscall Complex::~Complex(void)" (??1Complex@@UAE@XZ)

可能是没有找到lib文件;

使用代码导入lib文件;

#pragma comment(lib, "Zero.lib")

还是一样报LNK2001错误;

代码中应该找到了lib文件;因为如果随意改个不存在的lib文件名字,如: #pragma comment(lib, "Zerodddd.lib")

则提示:    LINK : fatal error LNK1104: cannot open file "Zerodddd.lib"

那么到此有可能是,用工具生成的lib文件有问题;zero本身不提供lib文件;

如果采用动态调用dll方式,则比较麻烦;动态装入DLL,获取函数地址,然后调用的方式;因为zero的dll提供的是类;

下面用CFree看一下;主文件代码如下;要把它的头文件包含进来;


#include <windows.h>
#include <stdio.h>
#include "resource.h"
#include "zero.h"LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);HINSTANCE hInst;
TCHAR szClassName[] = TEXT("zeroDemo");Complex a1,a2,a3;int WINAPI
WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{HWND hwnd;MSG messages;WNDCLASSEX wincl;hInst = hThisInstance;wincl.hInstance = hThisInstance;wincl.lpszClassName = szClassName;wincl.lpfnWndProc = WindowProcedure;wincl.style = CS_DBLCLKS;wincl.cbSize = sizeof (WNDCLASSEX);wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);wincl.hCursor = LoadCursor (NULL, IDC_ARROW);wincl.lpszMenuName = MAKEINTRESOURCE (IDC_TESTZERO2);wincl.cbClsExtra = 0;wincl.cbWndExtra = 0;wincl.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);if (!RegisterClassEx (&wincl))return 0;hwnd = CreateWindowEx (0,szClassName,TEXT("zero示例"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,400,400,HWND_DESKTOP,NULL,hThisInstance,NULL);ShowWindow (hwnd, nFunsterStil);while (GetMessage (&messages, NULL, 0, 0)){TranslateMessage(&messages);DispatchMessage(&messages);}return messages.wParam;
}LRESULT CALLBACK
WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{PAINTSTRUCT ps;HDC hdc;RECT rt;    char szBuffer[100];     switch (message){case WM_COMMAND:switch (LOWORD(wParam)){case IDM_zero:     hdc=GetDC(hwnd);a1.setReal(10.0);a1.setImag(5.0); //虚数,imaginary numbera2.setReal(6.0);a2.setImag(2.0);a3 = a1-a2;//wsprintf(szBuffer, "%d",a1.getReal());sprintf(szBuffer,"a1:   %lf + %lf",a1.getReal(),a1.getImag());TextOut(hdc,10,10,szBuffer,lstrlen(szBuffer));sprintf(szBuffer,"a2:   %lf + %lf",a2.getReal(),a2.getImag());TextOut(hdc,10,40,szBuffer,lstrlen(szBuffer));sprintf(szBuffer,"a3=a1-a2:   %lf + %lf",a3.getReal(),a3.getImag());TextOut(hdc,10,70,szBuffer,lstrlen(szBuffer));break;case IDM_ABOUT:MessageBox (hwnd, TEXT ("zeroDemo v1.0\nCopyright (C) 2020\n by bo"),TEXT ("zeroDemo"), MB_OK | MB_ICONINFORMATION);break;case IDM_EXIT:DestroyWindow(hwnd);break;default:return DefWindowProc(hwnd, message, wParam, lParam);               }break;case WM_CREATE:break;case WM_PAINT:hdc = BeginPaint(hwnd, &ps);                 GetClientRect(hwnd, &rt);               EndPaint(hwnd, &ps);break;case WM_DESTROY:PostQuitMessage (0);break;default:return DefWindowProc (hwnd, message, wParam, lParam);}return 0;
}

如果做如下的设置;libZero.dll.a拷贝到exe目录,拷贝到CFree的库文件目录;dll拷贝到exe目录;

则一直提示连接错误;

正在连接...
[Error] C:\PROGRA~2\C-FREE~1\mingw\bin\ld.exe: cannot find -llibZero.dll.a

配置为如下,则构建成功;

然后运行程序,结果如下;

代码只是简单的调用一下它的复数类;定义2个复数并赋值实部和虚部;再计算复数相减的结果;它的复数类是可用的;

其他更多功能自己探索;

wsprintf不支持格式化浮点类型,改用sprintf,sprintf需要包含#include <stdio.h>;

#include "resource.h"
#include <windows.h>/
//
// Menu
//IDC_TESTZERO2 MENU
BEGINPOPUP "&File"BEGINMENUITEM "ZERO",                 IDM_zeroMENUITEM "E&xit",                 IDM_EXITENDPOPUP "&Help"BEGINMENUITEM "&About ...",             IDM_ABOUTEND
END
#define  IDM_EXIT        10001
#define     IDM_ABOUT       10002#define    IDC_TESTZERO2       10101
#define     IDD_ABOUTBOX    10102
#define     IDM_zero        40001

使用数值计算库Zero - VC6调用失败、cfree调用成功相关推荐

  1. createfile调用失败_CreateFileMapping调用失败,GetLastError返回值为1006

    今天在创建文件映射对象时出错,返回值为1008("文件所在的卷已被外部改变,因此打开的文件不再有效. "),代码如下: CFile file(_T("C:/test.da ...

  2. c调用python第三方库_用 Python ctypes 来调用 C/C++ 编写的第三方库

    看到一篇简洁的文章--如何用Python ctypes调用C++(ctypes调用C没这么多麻烦事),不敢独享... 如果需要用 Python 调用 C/C++ 编写的第三方库(这些第三方库很可能就是 ...

  3. ARM开发板上iconv_open(utf-8, gb2312) 调用失败的解决方法(转)

    ARM开发板上iconv_open("utf-8", "gb2312") 调用失败的解决方法 应用程序代码如下: static int code_convert ...

  4. python科学计算库-数值计算库与科学计算库

    BLAS 接口 BLAS , LAPACK , ATLAS 这些数值计算库的名字很类似,他们之间有什么关系呢?BLAS是一组线性代数运算接口,目前是事实上的标准,很多数值计算/科学计算都实现了这套接口 ...

  5. C 语言fseek, ftell调用失败(fseek返回非零值,ftell返回-1)

    C 语言fseek. ftell调用失败(fseek返回非零值,ftell返回-1) 太长不看版 fseek调用失败,返回非零值,是因为传入的参数超过了文件尾,或者文件大于2G,需要使用fseek的6 ...

  6. pythonidle安装第三方库_在Python IDLE 下调用anaconda中的库教程

    在Python IDLE 下调用anaconda中的库教程 大家都知道,Anaconda是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.下载了anaco ...

  7. VS2019 MFC DLL共享动态链接库(MFC 常规库)封装例程非模态调用 MFC 常规库[二]

    [ 前言]          网上用很多关于MFC 共享DLL的简介,此处不在叙述.实际应用中发现"共享MFC DLL的规则DLL"是在编写基于MFC的DLL程序时,编译后该DLL ...

  8. LoadLibrary 调用失败错误码记录

    在某些服务器上,LoadLibrary 函数会出现调用失败的情况,以下是我的一些出错经验,希望能给其他人提供一些思路: 1.错误码 126 (找不到指定的模块): 1.确保该动态库存在,杀毒软件有时会 ...

  9. 部分电脑安装wps后,导致pptcom调用失败的解决方法

    最近发现公司的win7电脑上安装了wps导致pptcom调用失败,自家的软件控制不了ppt,去查pptcom注册表,发现wps把所有com接口ID都指向了自己的com组件的类型库(wps2013改变了 ...

最新文章

  1. java 任意多个整数相加_一个整数分为若干个连续整数之和(使用java实现)
  2. JConsole监控远程Tomcat服务器
  3. 程序员面试题精选100题(40)-扑克牌的顺子[算法]
  4. 《神武4》手游玩家高峰论坛落幕 玩家集思广益 游戏氛围有望调整
  5. 引导修复 不是活动的_河南省视频数据修复中心
  6. reset java_Java PushbackReader reset()用法及代码示例
  7. 经典面试题(15):以下代码将输出的结果是什么?
  8. Linux使用rostopic echo将rosbag文件转换成csv或txt文件以及sh脚本批量化操作
  9. python自动化框架(unnitest+selenium+htmlreport)
  10. POJ 2886 能被3除尽的数之和
  11. Stanford机器学习---第三讲. 逻辑回归和过拟合问题的解决 logistic Regression Regularization
  12. 深度 | 从各种注意力机制窥探深度学习在NLP中的神威
  13. 机器学习: 最大似然估计 (MLE) 最大后验概率(MAP)
  14. 手动发布web项目到tomcat服务器上
  15. 微信小程序开发的基本流程__BaiMoci
  16. sublime php code sniffer,Sublime插件CodeSniffer配置
  17. 基于FPGA的数字信号处理3.7开平方运算分析
  18. 网络爬虫-学习记录(三)使用Selenium并对去哪儿网站进行爬取
  19. [ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘
  20. 计算机cmd测试命令,[cmd测试网速]cmd指令测试网速技巧

热门文章

  1. mysql audit log.so_Percona Audit Log Plugin(mysql 审计)
  2. jinfo 的相关使用 || 两个经典的参数: -Xms -Xmx
  3. openFeign 服务接口的调用02—— openFeign 的使用步骤
  4. 第2周项目1c++语言中函数参数传递的三种方式
  5. Power of Two
  6. laplacian算子的运用
  7. img文件解包工具_使用tar归档命令,就不怕文件多!
  8. android 增删改查 源码_学生信息增删改查小程序案例(springboot服务端)
  9. 本地项目关联到远程git仓库
  10. explian执行计划