国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 讓Sqlite脫離VC++ Runtime獨立運行的方法

讓Sqlite脫離VC++ Runtime獨立運行的方法

2019-12-06 12:42mdxy-dxy ASP.NET教程

這篇文章主要介紹了讓Sqlite脫離VC++ Runtime獨立運行的方法,需要的朋友可以參考下

目前手頭上的一個.NET項目用到了Sqlite,這是我第一次接觸和使用Sqlite,總體感覺還是非常不錯的。這里把我使用Sqlite的經驗跟大家分享一下。

一.關于Sqlite  

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

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

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

讓Sqlite脫離VC++ Runtime獨立運行的方法

Sqlite資源鏈接:

(1)Sqlite官網:可以從官網下載源碼、或下載已經編譯好的二進制版本。支持的系統包括: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++運行時

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

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

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

1.方案一

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

2.方案二

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

     讓Sqlite脫離VC++ Runtime獨立運行的方法

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

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

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

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

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

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

 四.下載成果

  除非特別需求,否則大家沒有必要重復這一過程,我把生成的Sqlite二進制版本直接提供給大家下載使用。

補充:Sqlite官網已經提供靜態連接的庫了
http://system.data.sqlite.org/downloads/1.0.93.0/sqlite-netFx20-static-binary-bundle-Win32-2005-1.0.93.0.zip

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美日韩精品一区二区三区蜜桃 | 国产一级黄色 | 亚洲专区欧美 | 97久久香蕉国产线看观看 | 日韩成人av电影 | 在线观看国产 | 国产一区二区三区在线视频观看 | 欧美精品一二三区 | a一级免费视频 | 久久久久久久久久久久一区二区 | 97久久精品午夜一区二区 | 欧美日韩视频在线观看免费 | 亚洲国产精品一区久久av篠田 | 日韩中文字幕在线观看 | 国产精品久久久久一区二区三区 | 国产一区二区三区在线观看网站 | 久久这里只有国产精品 | 国产精品一卡二卡三卡 | 欧美狠狠操 | 亚洲一区在线视频 | 亚洲激情在线 | 欧美一级免费 | 激情综合网五月婷婷 | 成人精品视频免费 | 亚洲国产视频一区二区 | 日韩中文在线 | 久久精品在线 | 欧美日韩在线观看视频 | 黄色一级片免费 | 黄网站在线观看 | 黄色国产 | 国产一级一级毛片女人精品 | 亚洲国产精品一区久久av篠田 | 精品欧美| 欧美一区二区最爽乱淫视频免费看 | 91久久久久久久久久 | av色综合 | 日日夜夜一区二区 | 久久视频免费 | 欧美视频免费 | 成人免费一区二区三区视频网站 |