Sqlite怎么實現(xiàn)脫離VC++Runtime獨立運行-創(chuàng)新互聯(lián)

Sqlite怎么實現(xiàn)脫離VC++ Runtime獨立運行?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

我們提供的服務有:成都網站制作、成都網站設計、外貿營銷網站建設、微信公眾號開發(fā)、網站優(yōu)化、網站認證、永春ssl等。為上千余家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的永春網站制作公司

一.關于Sqlite 


Sqlite是一款開源的、適合在客戶端和嵌入式設備中使用的輕量級數(shù)據庫,支持標準的SQL。

不像SqlServer或Oracle的引擎是一個獨立的進程、通過TCP或命名管道等與程序進行通信,SQLite卻是作為程序的一個部件、一個構成部分,使用Sqlite的方式就是直接在程序中進行API調用。

原始的Sqlite是沒有一個向SqlServer企業(yè)管理器的可視化操作程序的,但是有個第三方開發(fā)的應用SqliteStudio非常不錯,基本的建庫、建表、編輯數(shù)據、導出數(shù)據等功能都支持得很好。SqliteStudio運行截圖如下所示:

Sqlite怎么實現(xiàn)脫離VC++ Runtime獨立運行

Sqlite資源鏈接:

(1)Sqlite官網:可以從官網下載源碼、或下載已經編譯好的二進制版本。支持的系統(tǒng)包括:Linux、MacOS、Windows、.NET。

(2)SqliteStudio:好用的Sqlite可視化管理器。

二.在.NET中使用Sqlite

從官網下載.NET版本的Sqlite,其主要包括兩個dll:SQLite.Interop.dll、System.Data.SQLite.dll。

(1)System.Data.SQLite.dll是一個標準的托管dll,我們可以直接在.NET項目中引用并使用它,就像使用.NET自帶的System.Data命名空間中的各個對象一樣。

(2)SQLite.Interop.dll是一個非托管的dll,是Sqlite引擎核心,我們需要將其拷貝到運行目錄下,在運行時,它會被System.Data.SQLite.dll調用。

三.讓Sqlite脫離VC++運行時

我們在項目開發(fā)完畢后測試的過程中發(fā)現(xiàn),使用了Sqlite的客戶端程序在某些機器上運行時會報錯,如下所示:

無法加載 DLL"SQLite.Interop.DLL";由于應用程序配置不正確,應用程序未能啟動。重新安裝應用程序可能會糾正這個問題。(異常來自 HRESULT:0x800736B1)

經過一番折騰,才發(fā)現(xiàn)是這些機器上沒有安裝VC++運行時(Visual C++ 2005 SP1 runtime),而SQLite.Interop.dll的運行是需要VC++運行時支持的。這點太不友好了。我們的項目是基于.NET 2.0開發(fā)的,windows xp sp1 及以上版本都自帶了這個Framework,而這些機器不一定安裝了VC++運行時。所以我第一反應就是,嘗試讓Sqlite在沒有安裝VC++運行時的機器上也能正常運行。

1.方案一

我baidu了一下,有個似乎可行的方案是這樣的:將msvcm80.dll、msvcp80.dll、msvcr80.dll這幾個動態(tài)庫也放到運行目錄下。這個方案我不太喜歡,于是我嘗試自己動手解決問題。

2.方案二

憑借我還未完全忘記的一點VC++基礎,我知道VC++程序在編譯時可以選擇是動態(tài)鏈接到依賴的庫還是靜態(tài)鏈接,如果是靜態(tài)連接,編譯生成的二進制程序中就相當于包含了一份依賴庫的拷貝。所以,我的想法是,重新編譯 SQLite.Interop.dll,使其靜態(tài)鏈接到VC++運行庫。我下載了Sqlite的源碼,用VS2010打開,截圖如下:

     Sqlite怎么實現(xiàn)脫離VC++ Runtime獨立運行

   SQLite.Interop.2010這個項目是核心,我們需要對它的一些設置稍微做些修改,這些小修改我花了一些時間摸索才成功,這里就略去具體的摸索過程,直接給出摸索成果:

(1)打開SQLite.Interop.2010項目屬性頁面,配置屬性 -> C/C++ -> 代碼生成 -> 運行庫,該項設置為 多線程調試 (/MTd)。

(2)繼續(xù) 配置屬性 -> 清單工具 -> 輸入和輸出 -> 嵌入清單,該項原來是“是”,改成“否”。

(3)顯示所有項目文件,然后找到SQLite.Interop.2010.props文件,并打開。刪掉其中的<INTEROP_MIXED_NAME>配置節(jié)點。

(4)從項目中移除“Resource Files”文件夾。

(5)重新編譯項目,生成的SQLite.Interop.dll便是我們所需要的。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網站建設公司,的支持。

分享名稱:Sqlite怎么實現(xiàn)脫離VC++Runtime獨立運行-創(chuàng)新互聯(lián)
鏈接URL:http://m.kartarina.com/article26/dicgjg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)網站設計定制網站Google全網營銷推廣域名注冊

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網站網頁設計
主站蜘蛛池模板: 爽到高潮无码视频在线观看| 午夜不卡无码中文字幕影院| 无码人妻精品一区二区三区在线| 国产午夜无码片免费| 成人无码午夜在线观看| 亚洲欧洲自拍拍偷午夜色无码| 免费A级毛片无码视频| 小泽玛丽无码视频一区 | 中文字幕av无码不卡免费| 亚洲国产AV无码专区亚洲AV| 少妇爆乳无码专区| 无码人妻熟妇AV又粗又大| 九九久久精品无码专区| 亚洲av无码一区二区三区天堂 | 国产成人精品一区二区三区无码| 精品人无码一区二区三区| 国产成人麻豆亚洲综合无码精品| 亚洲AV日韩AV永久无码色欲 | 久久AV无码精品人妻糸列| 国产成人无码AⅤ片在线观看| 人妻少妇看A偷人无码精品视频| 无码精品A∨在线观看中文| 一区二区三区人妻无码| 黄桃AV无码免费一区二区三区| 国产精品午夜无码AV天美传媒| 在线观看无码AV网站永久免费| 无码成人一区二区| 人妻无码人妻有码中文字幕| 精品人妻系列无码人妻免费视频| 黑人巨大无码中文字幕无码| 亚洲精品无码少妇30P| 亚洲AV无码一区二区三区牲色| 精品无码久久久久久尤物| 日韩人妻无码精品一专区| 人妻av无码一区二区三区| 亚洲中文字幕无码av在线| 亚洲另类无码专区丝袜| 性色av无码免费一区二区三区| 久久久久久久久免费看无码| 午夜麻豆国产精品无码| 国产精品无码一区二区三区在|