cmake生成Win64位工程
使用cmake編譯64的dll
一開(kāi)始使用cmake --build .來(lái)生成了dll,在導(dǎo)入到j(luò)ava項(xiàng)目中使用的時(shí)候,才發(fā)現(xiàn)是32位的。導(dǎo)致程序不能正常運(yùn)行,報(bào)錯(cuò)如下:
?
Exception in thread "main" java.lang.UnsatisfiedLinkError
Can't load IA 32-bit .dll on a AMD 64-bit platform12
即由于在AMD64的架構(gòu)下調(diào)用了32位的dll文件,導(dǎo)致的安全問(wèn)題。
看來(lái)需要讓cmake編譯出64位的dll才行啊。
下面分享一種可行的方法:
在介紹之前要先了解一個(gè)概念?
cmake有兩種編譯的方式,一種是使用CMakeLists.txt文件,另一種是使用CMakeCache.txt文件
cmake [option] ?指向含有頂級(jí)CMakeLists.txt的那個(gè)目錄
cmake [option] ?指向含有CMakeCache.txt的那個(gè)目錄?
第一種方式用于第一次生成cmake makefile,此后可以在build dir里直接cmake . 注意.表示當(dāng)前目錄,因?yàn)楫?dāng)前目錄中已經(jīng)有CMakeCache.txt,所以適用第二種方式。實(shí)際上cmake總是先檢查指定的build dir中有沒(méi)有CMakeCache.txt,如果有就按第二種方式處理;如果沒(méi)有才尋找CMakeLists.txt使用第一種方式處理。
下面介紹方法:?
1. 在CMakeLists.txt文件中添加
?
set(BUILD_USE_64BITS on)1
在你希望的輸出目錄下?
?
cmake -G "Visual Studio 13 2015 Win64" .. ?//這個(gè)VS的版本取決于你安裝的是哪個(gè)版本的VS1
仍然在輸出目錄下
?
cmake --build .1
構(gòu)建成功,得到64bit版的dll了。
總結(jié)
以上是生活随笔為你收集整理的cmake生成Win64位工程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Unity的匹配系统
- 下一篇: epoll的内核实现