cmake生成Win64位工程
使用cmake编译64的dll
一开始使用cmake --build .来生成了dll,在导入到java项目中使用的时候,才发现是32位的。导致程序不能正常运行,报错如下:
Exception in thread "main" java.lang.UnsatisfiedLinkError
Can't load IA 32-bit .dll on a AMD 64-bit platform12
即由于在AMD64的架构下调用了32位的dll文件,导致的安全问题。
看来需要让cmake编译出64位的dll才行啊。
下面分享一种可行的方法:
在介绍之前要先了解一个概念
cmake有两种编译的方式,一种是使用CMakeLists.txt文件,另一种是使用CMakeCache.txt文件
cmake [option] 指向含有顶级CMakeLists.txt的那个目录
cmake [option] 指向含有CMakeCache.txt的那个目录
第一种方式用于第一次生成cmake makefile,此后可以在build dir里直接cmake . 注意.表示当前目录,因为当前目录中已经有CMakeCache.txt,所以适用第二种方式。实际上cmake总是先检查指定的build dir中有没有CMakeCache.txt,如果有就按第二种方式处理;如果没有才寻找CMakeLists.txt使用第一种方式处理。
下面介绍方法:
1. 在CMakeLists.txt文件中添加
set(BUILD_USE_64BITS on)1
在你希望的输出目录下
cmake -G "Visual Studio 13 2015 Win64" .. //这个VS的版本取决于你安装的是哪个版本的VS1
仍然在输出目录下
cmake --build .1
构建成功,得到64bit版的dll了。
cmake生成Win64位工程相关推荐
- 使用CMake生成sln项目和VS工程遇到的问题
2019独角兽企业重金招聘Python工程师标准>>> 用vs运行cmake后的工程 参考:http://zhidao.baidu.com/link?url=AZRxI0jGDzo6 ...
- c语言编程题没有sln,使用CMake生成sln项目和VS工程遇到的问题
用vs运行cmake后的工程 1.单个文件示例: 1) 首先建立文件夹CMakeTest/Src 2) 在文件夹Src中建立两个文件main.c和CMakeLists.txt 3) main.c: # ...
- Visual Studio 32位64位的问题和如何编译32位64位工程的问题
Visual Studio自身没有32位和64位的分别,对于某一个特定的版本只有一个版本安装文件(即不存在32位版本的VS2015安装文件和64位版本的VS2015安装文件) 对于自己开发的工程,编译 ...
- CMake 常用总结二:CMake 生成静态库与动态库
引言 CMake 实践帮助我们对 CMake 有一个系统全面的了解,并且有大量示例以供参考,至少在实际项目中可以让我们有能力看懂并修改项目中现有的 CMake . 阅读完 CMake 实践文档,认为自 ...
- openHEVC在Windows下构建vs32/64位工程(vs2013)
前期准备 yasm:http://yasm.tortall.net/Download.html openHEVC: https://github.com/OpenHEVC/openHEVC SDL2. ...
- 使用Cmake生成跨平台项目编译解决方案
项目最近有需求在windows下面运行,我花了几周时间将linux的服务器移植到windows下面,目前已经能够正常运行服务器,目前又有了新需求,两边的代码结构和组织是分开的,因此为了两边能够同步维护 ...
- win10子系统linux下cmake编译32位程序
文章目录 Ubuntu 18运行32位程序 添加软件源 安装编译环境 编写CMakeLists.txt cmake编译 运行程序 SUSE 15.0运行32位程序 m32编译 添加软件源 安装qemu ...
- CMake管理VS+Qt工程
CMake:是一个比make更高级的编译配置工具,它可以根据不同平台.不同的编译器,生成相应的Makefile或者vcproj项目. 近期使用Visual Studio 2015 建立了Qt工程,不使 ...
- 生成24位字符串ID__IdGenerator.java
此工具类用于生成24位字符串ID,唯一不重复. 直接通过 IdGenerator.get() 获取. 源码如下:(点击下载源码 - IdGenerator.java ) 1 import java.n ...
最新文章
- 远程办公时,有哪些提高沟通效率的技巧?
- 【重要预警】“永恒之蓝”漏洞又现新木马 组成僵尸网络挖矿虚拟货币
- [Node]node.js 文件操作
- 传承or创新 ?解密分布式数据库自研修炼之路
- java字符串拆分成数组_用Java实现JVM第八章《数组和字符串》
- 第 十 七 天 : 安 装 php 遇 到 的 错 误 汇 总
- 阿里架构师眼中Dubbo的过去,现在以及未来
- imx6 i2c分析
- PHP、Python 上榜最慢的现代编程语言
- [最小生成树][Dij] Jzoj P5818 做运动
- 浙大计算机基础知识2,[精选资料]14年浙大远程计算机基础2Windows知识题高起专 作业题2答案...
- spring读取配置文件
- 锐捷网络linux如何认证上网,如何在Linux里面进行锐捷认证上网
- 一个人的生命周期,就是人的一生
- 爬虫工程师是干什么的?你真的知道吗?
- 完整的ACSII编码表
- css文字闪光特效,利用js css3实现文字闪光滑过动画特效
- HCI 基础知识之一
- 借助NetFlow Analyzer的IPAM SPM插件,实现IP和交换机端口管理
- android将控件镜像显示,Android重写ImageView实现图片镜像效果
热门文章
- 源码安装mysql5.1.51
- 网络编程常用接口的内核实现----sys_listen()
- linux文件系统_Linux的文件系统简介
- diff算法_vue源码解读 diff算法
- python内置函数分类_Python 69个内置函数分类总结
- 【转】人工智能教程-前言
- c#中的BeginInvoke和EndEndInvoke 摘要
- UML之用例图(use case)箭头方向
- ABP入门系列(12)——如何升级Abp并调试源码
- Spark读取HDFS上的Snappy压缩文件所导致的内存溢出问题 java.lang.OutOfMemoryError: GC overhead limit exceeded