GDAL庫在Visual Studio C++環(huán)境中的配置

??本文介紹在Visual Studio軟件中配置迎膜、編譯C++ 環(huán)境下GDAL庫、SQLite環(huán)境與PROJ庫的詳細(xì)方法秒旋。

??GDAL庫是一個非常方便的地理數(shù)據(jù)處理庫痴柔,但其在C++ 環(huán)境下的配置與編譯流程較為復(fù)雜竞滓;尤其是最新的GDAL 3及以上版本咐吼,其在C++ 環(huán)境中的配置更是首先需要滿足許多其他的環(huán)境配置條件(包括SQLite環(huán)境、CMake軟件與PROJ庫)商佑,使得其配置變得更復(fù)雜一些锯茄。本文就詳細(xì)介紹在Visual Studio軟件中,配置GDAL庫所需的環(huán)境莉御,并最終配置撇吞、編譯GDAL庫的方法。

1 寫在前面

??首先礁叔,本文是基于Visual Studio 2022軟件進(jìn)行的配置牍颈;其中,GDAL庫版本為3.5.2琅关,SQLite環(huán)境版本為3.39.4煮岁,PROJ庫版本為9.1.0。此外涣易,在配置過程中還需要用到跨平臺編譯工具CMake軟件画机,其版本為3.24.2。如果大家安裝的是以上庫新症、環(huán)境或軟件的其他版本步氏,也可以參考本文,因為整體流程都是近似的徒爹;但可能部分操作的細(xì)節(jié)會稍微有一些差異荚醒。

??其次,在編譯PROJ庫時發(fā)現(xiàn)隆嗅,可能是由于PROJ庫最新的9.1.0版本的自身要求界阁,只能編譯Release版本的PROJ庫;若編譯Debug版本則會報錯胖喳;而同時泡躯,SQLite環(huán)境、PROJ庫與最終的GDAL庫需要保持一致(即三者要么都是Release版本,要么都是Debug版本)较剃。因此咕别,本文最終選擇了配置Release版本的GDAL庫;但最終測試代碼時發(fā)現(xiàn)写穴,在Visual Studio軟件中無論是Release模式還是Debug模式顷级,都可以成功調(diào)用配置好的Release版本的GDAL庫。所以确垫,本文就主要介紹Release版本的GDAL庫的配置方法,但也會在對應(yīng)流程處注明如果想配置Debug版本的GDAL庫,該如何設(shè)置。

2 具體配置

??配置GDAL庫首先需要準(zhǔn)備好PROJ庫憔古,而PROJ庫的配置則需要準(zhǔn)備好SQLite環(huán)境與CMake軟件(這些似乎是GDAL 3及以上版本才需要的耐床,網(wǎng)上很多GDAL 2版本的配置教程都沒有這么麻煩的準(zhǔn)備工作);因此我們首先逐一配置好上述這些額外需要的環(huán)境或軟件绣版。

2.1 SQLite配置

??首先,我們進(jìn)行SQLite環(huán)境的配置。SQLite是一個由C語言撰寫的數(shù)據(jù)庫引擎款票,其為后續(xù)需要配置的PROJ庫提供了數(shù)據(jù)支持,同時配置GDAL庫也會用到這一環(huán)境泽论。

??首先艾少,我們進(jìn)入SQLite官方下載網(wǎng)站https://www.sqlite.org/download.html),并下載“Source Code”中的第一項sqlite-amalgamation-3390400翼悴,以及“Precompiled Binaries for Windows”中的第二項sqlite-dll-win64-x64-3390400與第三項sqlite-tools-win32-x86-3390400缚够,一共是三個文件,如下圖所示鹦赎。這里需要注意谍椅,隨著SQLite版本的更新,上述三個文件名稱最后面的一長串?dāng)?shù)字會隨著改變古话,大家只需要對照好文件名稱前面的字樣即可雏吭。

??隨后,將上述下載好的三個壓縮包文件解壓到同一個文件夾下(下圖是我在配置完SQLite環(huán)境之后截的圖陪踩,因此文件夾的個數(shù)與名稱和大家的會有一些差異)杖们。

??隨后,打開Visual Studio軟件膊毁,新建一個項目胀莹。我這里因為Visual Studio軟件原本就是開著的,所以就可以選擇“文件”→“新建”→“項目...”婚温。

??隨后描焰,選擇“空項目”,并選擇“下一步”。

??配置好“項目名稱”與“位置”荆秦。其中篱竭,“項目名稱”我在這里配置為MySQLite,“位置”就選擇剛剛我們解壓縮三個文件的文件夾即可步绸。

??隨后掺逼,分別在“頭文件”與“源文件”處右鍵,通過“添加”→“現(xiàn)有項...”的方法瓤介,將剛剛解壓縮得到文件中的sqlite3.hsqlite3ext.h文件放入“頭文件”吕喘,并將sqlite3.csqlite3.def文件放入“源文件”。

??完成后如下圖所示刑桑。

??接下來氯质,選中項目名稱MySQLite,并選擇“屬性”→“配置屬性”→“常規(guī)”祠斧,選擇“配置類型”,將其選擇為靜態(tài)庫(.lib)烛芬,并在上方的“配置”與“平臺”中將二者選擇為“所有配置”與“所有平臺”。

??接下來鹏浅,在“C/C++”→“預(yù)處理器”中季希,設(shè)置“預(yù)處理器定義”武学。

??在其中復(fù)制如下代碼即可曲掰。

_USRDLL
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_UNLOCK_NOTIFY

??復(fù)制后如下圖所示。

??接下來,在“鏈接器”→“輸入”中配置“模塊定義文件”坟瓢。

??找到剛剛解壓縮得到的sqlite3.def文件,按下Shift按鈕并右鍵首懈,選擇“復(fù)制文件地址”。

??并將其粘貼至“模塊定義文件”中。

??接下來官辽,在Visual Studio軟件中蛹磺,打開sqlite3.def文件,在其最后一行添加如下的代碼同仆。

sqlite3_unlock_notify

??如下圖所示称开。

??接下來,在上圖最上方的紅色方框處乓梨,將原來的Debug修改為Release鳖轰,如下圖所示;表示我們接下來將配置Release版本的SQLite環(huán)境扶镀。如果大家需要Debug版本蕴侣,那么這里就還是保持選中Debug即可。

??接下來臭觉,選中項目名稱昆雀,并右鍵選擇“生成”辱志。

??接下來,Visual Studio軟件將生成項目狞膘。

??此時揩懒,在前面提到的SQLite環(huán)境所下載的三個壓縮包文件解壓后所存放的文件夾中,我們新建三個文件夾挽封,分別命名為include已球、libbin

??隨后辅愿,首先在剛剛生成的項目的x64\Release文件夾中智亮,找到MySQLite.lib文件。這里如果大家剛剛生成的是Debug版本的項目点待,那么就是在Debug文件夾中阔蛉。

??隨后,將其復(fù)制到剛剛新建的lib文件夾中癞埠。

??接下來状原,將sqlite-amalgamation-3390400文件夾中的sqlite3.hsqlite3ext.h文件復(fù)制。

??將其粘貼至剛剛新建立的include文件夾中苗踪。

??隨后遭笋,將sqlite-tools-win32-x86-3390400文件夾中的sqlite.exe文件復(fù)制。

??粘貼至剛剛新建立的bin文件夾中徒探。

??以上,即完成了SQLite環(huán)境的配置喂窟。

2.2 CMake配置

??接下來测暗,我們開始對CMake軟件進(jìn)行配置。CMake軟件是一個跨平臺的編譯軟件磨澡,在后期進(jìn)行PROJ庫配置時需要用到碗啄。

??首先,我們還是在其官方下載網(wǎng)站https://cmake.org/download/)進(jìn)行軟件的下載稳摄。這里我們下載其“Binary distributions”中的第一項即可稚字。

??下載完畢后,可以看到其安裝包厦酬。

??雙擊安裝包胆描,進(jìn)行軟件的安裝即可。這里需要注意仗阅,安裝過程中昌讲,在以下窗口中我們需要選擇第三項,并勾選中最下方的勾選項减噪,如下圖所示短绸。

??以上车吹,即完成了CMake軟件的配置。

2.3 PROJ配置

??接下來醋闭,我們開始PROJ庫的配置窄驹。PROJ庫是一個地理坐標(biāo)轉(zhuǎn)換庫,用以處理不同的地理坐標(biāo)數(shù)據(jù)证逻;因為我們要安裝的GDAL庫是一個地理數(shù)據(jù)處理庫乐埠,因此其固然需要PROJ這一地理坐標(biāo)轉(zhuǎn)換庫來完成各項地理數(shù)據(jù)操作。

??PROJ庫的配置有兩種方法——第一種是傳統(tǒng)方法瑟曲,即用庫的源代碼來進(jìn)行編譯饮戳;第二種是PROJ庫官網(wǎng)比較推薦的新方法,即用OSGeo4W軟件來進(jìn)行PROJ庫的下載與編譯洞拨。盡管PROJ庫官網(wǎng)目前推薦用第二種方法來配置扯罐,但是我一直沒有找到第二種方法配置PROJ庫完畢后其所生成的數(shù)據(jù)文件,導(dǎo)致沒有辦法進(jìn)行后續(xù)GDAL庫的配置烦衣;另一方面歹河,若采用第二種方法,OSGeo4W軟件在下載PROJ庫時經(jīng)常會出現(xiàn)網(wǎng)絡(luò)問題導(dǎo)致的下載終止花吟,且想要再下載還只能重新開始秸歧,非常耽誤時間。因此衅澈,我個人還是建議大家用第一種方法(也就是下文中的方法一)來實現(xiàn)键菱;雖然這種方法操作起來比較麻煩,但至少比較穩(wěn)定今布,而且可以保證后續(xù)GDAL庫的配置是可以實現(xiàn)的经备。同時,本文也將并不推薦的第二種方法的操作流程介紹一下部默,如果大家感興趣可以研究一下第二種方法侵蒙。

2.3.1 方法一

??首先,我們在PROJ庫的官方下載網(wǎng)站https://proj.org/download.html)中下載其源代碼傅蹂。

??在官網(wǎng)纷闺,我們還可以看到官方將這種從源代碼編譯的方法稱作“傳統(tǒng)方法”。

??隨后份蝴,將下載后的壓縮包解壓犁功,并在解壓后得到的文件夾中新建立一個build文件夾。

??接下來婚夫,打開我們剛剛下載波桩、安裝好的CMake軟件,并在下圖所示的兩個編輯欄中请敦,分別選定解壓后的PROJ庫文件夾與我們剛剛在其中新建的build文件夾镐躲;隨后储玫,點擊“Configue”。

??隨后萤皂,在彈出的窗口中配置我們的Visual Studio軟件版本撒穷,并在第二個選項中選擇處理器的架構(gòu),一般選擇x64即可裆熙。

??隨即端礼,CMake軟件開始運行第一次配置。稍等片刻入录,一般會出現(xiàn)滿屏幕的紅色蛤奥,如下圖所示。

??其中僚稿,我們需要修改一下上圖中藍(lán)色方框內(nèi)的五條數(shù)據(jù)凡桥。首先,我們在解壓后的PROJ庫文件夾中蚀同,新建GTest文件夾缅刽。

??并將其作為GTest_DIR后所對應(yīng)的數(shù)據(jù)。

??接下來蠢络,在CMAKE_INSTALL_PREFIX中衰猛,配置一個我們后期將要存放PROJ庫的路徑;接下來的三個數(shù)據(jù)刹孔,我們分別選擇前面配置SQLite環(huán)境時啡省,所得到的bin文件夾中的sqlite3.exe文件、include文件夾與MySQLite.lib文件的路徑髓霞。具體配置如下圖所示卦睹。

??隨后,再點擊一次“Configue”酸茴。

??稍等片刻,待其配置完成后兢交,再點擊“Generate”薪捍;如上圖所示。

??待其生成完畢后配喳,我們可以在剛剛解壓后的PROJ庫文件夾中新建的build文件夾中酪穿,看到如下所示的.sln文件。

??隨后晴裹,在開始菜單中找到位于Visual Studio 2022軟件下的“x64 Native Tools Command Prompt for VS 2022”軟件被济。

??首先,cd進(jìn)入PROJ庫文件夾中剛剛新建的build文件夾涧团。這里大家依據(jù)剛剛自己設(shè)定的文件夾路徑來cd進(jìn)入即可只磷。

cd C:\proj-9.1.0\build

??接下來经磅,輸入如下的代碼,并回車運行钮追。

msbuild ALL_BUILD.vcxproj /p:Configuration="Release"

??其中预厌,上述代碼中="Release"表示我們將編譯Release版本的PROJ庫;如果大家需要編譯Debug版本的庫元媚,則將其修改為="Debug"即可轧叽。

??這里我們提一句,本文開頭之所以說最終只能編譯Release版本的PROJ庫刊棕,是因為一旦前面的代碼我們選擇編譯Debug版本炭晒,則其運行后會報錯,出現(xiàn)如下所示的情況甥角。

??其中网严,這里不同的錯誤,都表明我們目前只能配置Release版本的PROJ庫蜈膨。

??因此屿笼,我在這里最終選擇編譯Release版本的PROJ庫。雖然選擇編譯Release版本的PROJ庫在這里也會有警告出現(xiàn)翁巍,但這并不影響最后的結(jié)果驴一。

??接下來,我們繼續(xù)輸入如下所示的代碼灶壶。

msbuild INSTALL.vcxproj /p:Configuration="Release"

??其中肝断,如果我們需要編譯Debug版本的庫,則將其修改為="Debug"即可驰凛。

??運行代碼胸懈,得到結(jié)果如下。

??此時恰响,前面提到我們在CMake軟件中設(shè)置了CMAKE_INSTALL_PREFIX所對應(yīng)的文件夾路徑趣钱。

??在這個路徑中,此時我們可以看到其已經(jīng)自動生成了bin胚宦、include首有、libshare等四個文件夾。

??以上枢劝,即完成了PROJ庫的配置井联。

2.3.2 方法二

??這里我們介紹一下PROJ庫的第二種配置方法。但前面我們也提到您旁,并不推薦這種方法烙常,大家如果有需要參考一下即可。如果前面已經(jīng)通過方法一實現(xiàn)了PROJ庫的配置鹤盒,那么直接跳過這里蚕脏,繼續(xù)閱讀本文2.4部分即可侦副。

??首先,我們按照官方所給出的OSGeo4W軟件下載路徑蝗锥,進(jìn)行OSGeo4W軟件的下載跃洛。

??或者也可以直接從這里進(jìn)行下載:https://download.osgeo.org/osgeo4w/osgeo4w-setup.exe

??接下來终议,進(jìn)行軟件安裝的過程中汇竭,在下圖所示的界面中選擇第二個選項。

??在下圖所示的界面中穴张,選擇第一個選項细燎。

??在下圖所示的界面中,進(jìn)行如下的配置皂甘。

??在下圖所示的界面中玻驻,進(jìn)行如下的配置。

??在下圖所示的界面中偿枕,進(jìn)行如下的配置璧瞬。

??在下圖所示的界面中,進(jìn)行如下的配置渐夸。

??隨后嗤锉,在下圖所示的界面中,首先找到第一個選項墓塌。

??將其展開后瘟忱,找到帶有proj字樣的那一行。

??這里要注意苫幢,只要確保帶有proj字樣的那一行的New列中访诱,出現(xiàn)庫的版本號即可,其他行的這一列都是顯示為Skip即可韩肝。

??隨后触菜,如果出現(xiàn)下圖所示的提示,按照其推薦設(shè)置進(jìn)行配置即可哀峻。當(dāng)然涡相,如果我們前面選擇了只下載PROJ庫的話一般并不會出現(xiàn)這個提示;如果下載時選中的庫比較多谜诫,則可能會出現(xiàn)這個漾峡。

??隨后攻旦,即可開始下載喻旷。

??稍等片刻,將下載完畢牢屋。

??到這里且预,PROJ庫的官網(wǎng)就說完成了這一庫的配置槽袄。但是通過這樣的方法,我一直沒有辦法找到庫對應(yīng)的數(shù)據(jù)文件或其路徑(比如前述lib锋谐、bininclude文件夾等的路徑)遍尺。所以最終還是選擇用方法一來實現(xiàn)PROJ庫的配置了。

2.4 GDAL配置

??完成了以上所有的操作涮拗,終于可以開始GDAL庫的配置了乾戏。

??首先,依然是在其官方下載網(wǎng)站https://gdal.org/download.html)中進(jìn)行源代碼的下載三热。

??隨后鼓择,將下載得到的壓縮包文件解壓。

??隨后就漾,找到其中的nmake.opt文件呐能,并用Visual Studio軟件打開。

??隨后抑堡,在其42行左右(具體行數(shù)可能會隨著GDAL庫版本的不同而不同)的位置摆出,將等號后的數(shù)字修改為自己Visual Studio軟件的_MSC_VER值。如果大家不知道自己Visual Studio軟件的這一個值是多少首妖,可以參考文章Visual Studio軟件_MSC_VER數(shù)值(MSVC編譯器版本)的獲取http://www.reibang.com/p/d9c7130e574b)偎漫。

??接下來,在66行左右的位置悯搔,將這一路徑設(shè)置為自己希望編譯后GDAL庫存放的路徑骑丸。

??隨后,在130行左右的位置妒貌,如果大家需要編譯的是Debug版本的GDAL庫通危,則將等號后的數(shù)字修改為1即可;我們這里需要編譯的是Release版本的GDAL庫灌曙,就不用修改菊碟。

??隨后,在213行左右的位置在刺,如果我們的電腦是64位的Windows系統(tǒng)逆害,就將這一行的注釋取消掉即可。

??接下來蚣驼,在245行左右的位置魄幕,如果需要動態(tài)編譯就不用修改,如果需要靜態(tài)編譯就將等號后的數(shù)字修改為0颖杏。一般我們選擇靜態(tài)編譯即可纯陨,因此將其修改為0

??接下來,在265行左右翼抠,需要我們配置PROJ庫的一些路徑咙轩。

??其中,第一個路徑是前面我們在CMake軟件中設(shè)置了CMAKE_INSTALL_PREFIX所對應(yīng)的文件夾路徑下阴颖,include文件夾的路徑活喊;第二個路徑是這一文件夾中,lib文件夾中proj.lib文件的路徑量愧。如下圖所示钾菊。

??這兩行配置完畢,如下圖所示偎肃。

??最后结缚,在638行左右,需要我們配置SQLite環(huán)境的一些路徑软棺。

??其中红竭,這里所涉及的文件夾,是前面提到的SQLite環(huán)境所下載的三個壓縮包文件解壓后所存放的文件夾中喘落,我們新建的茵宪、分別命名為includelibbin的那三個文件夾瘦棋。其中稀火,將include文件夾的路徑放在第一個位置,將lib文件夾中的MySQLite.lib文件的路徑放在第二個位置赌朋。

??配置完畢后凰狞,如下圖所示。

??隨后沛慢,保存當(dāng)前nmake.opt文件赡若,并再一次打開“x64 Native Tools Command Prompt for VS 2022”軟件,cd進(jìn)入剛剛解壓得到的GDAL庫文件夾(也就是nmake.opt文件所在的那個文件夾团甲,這一文件夾下還有一個名為makefile.vc的文件逾冬,如下圖所示)。

??隨后躺苦,對于我們需要的Release版本身腻,輸入如下代碼并運行。

nmake /f makefile.vc

??運行后得到如下圖所示的結(jié)果匹厘。

??隨后嘀趟,輸入如下所示的代碼并運行。

nmake /f makefile.vc devinstall

??運行后得到如下圖所示的結(jié)果愈诚。

??如果需要的是Debug版本的GDAL庫她按,那么不用輸入以上兩句代碼坡椒,直接分別輸入并運行以下三句代碼即可。

nmake /f makefile.vc WIN64=YES DEBUG=1
nmake /f makefile.vc install
nmake /f makefile.vc devinstall

??此時尤溜,在我們剛剛于nmake.opt文件66行左右處所設(shè)定的GDAL庫存放路徑(如下圖所示)中,可以看到已經(jīng)自動生成了相關(guān)的文件夾汗唱,如下下圖所示宫莱。

??以上,即完成了GDAL庫的配置哩罪。

3 配置測試

??接下來授霸,我們需要檢查一下GDAL庫是否可以使用。

??我們在Visual Studio軟件中新建一個項目际插,并寫一段需要調(diào)用GDAL庫的代碼碘耳;本文就用下面這個很簡單的一段代碼來驗證GDAL庫是否可用。

#include <iostream>
#include <gdal.h>
#include <gdal_priv.h>
using namespace std;

int main() {
    GDALDataset* poDataset;
    GDALAllRegister();
    poDataset = (GDALDataset*)GDALOpen("pic.tif", GA_ReadOnly);
    if (poDataset == NULL)
    {
        cout << "找不到文件框弛,但說明GDAL可以用了";
    }
    return 0;
}

??其中需要注意辛辨,如果我們需要調(diào)用GDAL庫,就需要在代碼開頭通過以下代碼引入相關(guān)的頭文件瑟枫。

#include <gdal.h>
#include <gdal_priv.h>

??隨后斗搞,首先按照文章Visual Studio調(diào)用環(huán)境配置完畢的第三方庫的方法http://www.reibang.com/p/ec307cf18828)中提到的方法,在Visual Studio軟件中配置好相應(yīng)的屬性設(shè)置慷妙。

??接下來,將剛剛于nmake.opt文件66行左右處所設(shè)定的GDAL庫存放路徑中的bin文件夾,與PROJ庫配置好后在其指定文件夾(即CMake軟件中設(shè)置了CMAKE_INSTALL_PREFIX所對應(yīng)的文件夾)中生成的share文件夾贝咙,分別放于系統(tǒng)變量的PATH中鸳慈;具體方法可以參考文章Windows 10用戶變量、系統(tǒng)變量等環(huán)境變量新建架馋、編輯修改與刪除的方法http://www.reibang.com/p/1810d3dea4d3)狞山。

??配置好后如下圖最后兩行所示。

??這里如果不配置環(huán)境變量的話叉寂,在運行調(diào)用GDAL庫的代碼時铣墨,會出現(xiàn)如下圖所示的錯誤或類似錯誤。

??完成以上操作后办绝,運行代碼伊约。此時,有可能出現(xiàn)找不到proj_9_1.dll文件的錯誤孕蝉;如下圖所示屡律。

??針對這一情況,我們只需要將編譯好后的PROJ庫中的這一文件復(fù)制降淮。

??并粘貼至當(dāng)前調(diào)用GDAL庫的項目的文件夾中即可超埋。

??隨后搏讶,運行程序,即可成功調(diào)用GDAL庫霍殴。

??至此媒惕,大功告成~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市来庭,隨后出現(xiàn)的幾起案子妒蔚,更是在濱河造成了極大的恐慌,老刑警劉巖月弛,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肴盏,死亡現(xiàn)場離奇詭異,居然都是意外死亡帽衙,警方通過查閱死者的電腦和手機菜皂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厉萝,“玉大人恍飘,你說我怎么就攤上這事∏吹妫” “怎么了常侣?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長弹渔。 經(jīng)常有香客問我胳施,道長,這世上最難降的妖魔是什么肢专? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任舞肆,我火速辦了婚禮,結(jié)果婚禮上博杖,老公的妹妹穿的比我還像新娘椿胯。我一直安慰自己,他們只是感情好剃根,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布哩盲。 她就那樣靜靜地躺著,像睡著了一般狈醉。 火紅的嫁衣襯著肌膚如雪廉油。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天苗傅,我揣著相機與錄音抒线,去河邊找鬼。 笑死渣慕,一個胖子當(dāng)著我的面吹牛嘶炭,可吹牛的內(nèi)容都是我干的抱慌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼眨猎,長吁一口氣:“原來是場噩夢啊……” “哼抑进!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起睡陪,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤寺渗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宝穗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡码秉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年逮矛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片转砖。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡须鼎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出府蔗,到底是詐尸還是另有隱情晋控,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布姓赤,位于F島的核電站赡译,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏不铆。R本人自食惡果不足惜蝌焚,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望誓斥。 院中可真熱鬧只洒,春花似錦、人聲如沸劳坑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽距芬。三九已至涝开,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間框仔,已是汗流浹背忠寻。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留存和,地道東北人奕剃。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓衷旅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親纵朋。 傳聞我的和親對象是個殘疾皇子柿顶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容