1. 程式人生 > >VS開發環境下生成和呼叫dll出現的問題和解決方法-1

VS開發環境下生成和呼叫dll出現的問題和解決方法-1

dll生成和呼叫方法網上很多,省略。

 1 build之後只生成了dll檔案,沒有lib檔案。

原因和方法:沒有對任何的類或者函式定義DLL interface,需要對類或者函式定義DLL interface,定義方法如下:

對於類:

class _declspec(dllexport) classname{}
對於函式:

returntype _declspec(dllexport) functionname {}

類被定義了<span style="color: rgb(42, 42, 42); font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px;">DLL interface的情況下,其類的成員函式不能再被定義為<span style="color: rgb(42, 42, 42); font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px;">DLL interface,否則會出現以下錯誤:</span></span>
<span style="color: rgb(42, 42, 42); font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px;"><span style="color: rgb(42, 42, 42); font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px;">C2487<span style="white-space:pre">	</span>'functionname': member of dll interface class may not be declared with dll interface</span></span>

參考連結:

http://www.cnblogs.com/whiteyun/archive/2011/07/22/2113668.html

https://msdn.microsoft.com/en-us/library/t72ahzw1.aspx

2. dll檔案找不到

直接用 HMODULE hMod = LoadLibrary("Tracker.dll"); 這句話的話會產生以下錯誤:

Error (active)argument of type "const char *" is incompatible with parameter of type "LPCWSTR"

我用了 HMODULE hMod = LoadLibrary((LPCWSTR

)"Tracker.dll");來解決,所以build能通過,但是找不到dll檔案!

之後用了 HMODULE hMod = LoadLibrary(TEXT("Tracker.dll")); build通過了,並且也能找到dll檔案。

有一點還不能理解的是dll的搜尋方法,因為Tracker.dll放在project下邊的x64/Debug資料夾和程式碼的資料夾都能找到,放在其他位置則找不到!

相關推薦

VS開發環境生成呼叫dll出現的問題解決方法-1

dll生成和呼叫方法網上很多,省略。  1 build之後只生成了dll檔案,沒有lib檔案。 原因和方法:沒有對任何的類或者函式定義DLL interface,需要對類或者函式定義DLL interface,定義方法如下: 對於類: class _declspec(

64位開發環境編譯32位dll檔案

       最近在做PH專案的時候,遇到了一個小問題。我們做的系統,算是在人家基礎上的一個二次開發:我們用到他們裝置,同時需要他們給我們提供介面。我們拿到介面,在32位系統上編譯不會出問題,而在我

VS開發環境,外網聯調!

在.NET開發環境下,外網聯調 背景:       大多數情況下,我們在使用VS做開發時,除錯時,都是通過http://localhost:port的方式來除錯。在區域網內,都沒有辦法聯調。現在有沒有辦法,不僅可以讓區域網內的計算機聯調,還可以讓外網的朋友聯合 測試呢,答

開發環境未找到 BASE64Encoder及BASE64Decoder的解決辦法

Base64的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder的sun.misc.BASE64Encoder/BASE64Decoder類這個類是sun公司的

windows環境搭建Java開發環境(一):jdk安裝配置

變量 win jns jdk安裝 分享 tool 直接 www. 技術 一、資源下載   官網:http://www.oracle.com/technetwork/java/javase/downloads/index.html   本人安裝的是jdk1.8,百度雲資源:鏈

python開發環境pippip3的區別

在很多教程裡都有遇到的pip和pip3,簡單來說pip和pip3是一樣的,只是為了區別python2和python3之間的呼叫,避免衝突而進行的設定。如果你的電腦只安裝了python3,那麼你使用pip和pip3效果都是一樣的,如果你的電腦只安裝了python,那麼你無法使用pip3。 同時

Android正式開發環境切換操作,BuildConfig幫你一步到位

在Android開發中,正式和測試環境的切換,一般情況下我們都會去設定一個tag,通過此tag來改變開發環境。 以前的寫法一般都是: public class BaseApplication extends Application { public boolean

VS2013 c++ 生成呼叫DLL動態連結庫

在專案方案目錄裡,Debug資料夾中可以找到DLLGenerator.lib 和 DLLGenerator.dll, 把這兩個檔案和工程的標頭檔案(dllgenerator.h)移動到一個空資料夾(E:\dlltest\DLL)中,以後你的專案用到此dll就包含這個目錄,至此動態庫建立完畢。

關於如何在linux環境生成a庫so庫(改,附圖)

一般linux環境下的連結庫分為a庫和so庫,分別表示靜態連結庫和動態連結庫,其作用是把C程式編譯好做成一種可執行連結檔案,c主程式檔案呼叫這些程式的函式介面是可以使用a庫或so庫,在主程式中只需要i

spark最新原始碼下載並匯入到開發環境助推高質量程式碼(Scala IDEA for EclipseIntelliJ IDEA皆適用)(以spark2.2.0原始碼包為例)(圖文詳解)

  不多說,直接上乾貨! 前言     其實啊,無論你是初學者還是具備了有一定spark程式設計經驗,都需要對spark原始碼足夠重視起來。   本人,肺腑之己見,想要成為大資料的大牛和頂尖專家,多結合原始碼和操練程式設計。   好一段時間之前,寫過這篇部落格

Vue開發環境呼叫介面跨域問題

需在工程目錄config/index.js內對proxyTable項進行如下配置: proxyTable: { '/api': { target: 'http://xxxxxx.com', changeOrigin: true,

Vue-cli簡單的使用axios開發環境跨域

官方說法:Axios 是一個基於 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中 這裡是英文文件和在kancloud上發現的中文文件 在vue專案下進行安裝(這裡用的是vue-cli建立的專案簡單的使用示例) $ npm i a

Eclipse開發環境搭建Maven

-1 mage cal 配置文件 pub 添加 apache local 打開 (一)開發環境   Eclipse Mars2(4.5.2) + Maven 3.5.0 (二)配置步驟   1.首先,需要將Maven環境配置好,maven下載地址:http://maven

VS開發環境中的一些Hits

its 原因 source 註冊 http tag data evel 及其 默認前提 :Windows7系統 1. 以快速打開管理權限下的VS 通常當默認帳戶權限不夠的時候,同時需要以管理權限運行VS時,每次都要右鍵點擊選擇管理員權限啟動。及其麻煩,可以一次性解決

Hbuilder開發app時生成ios要的mobileprovisionp12文件步驟.

。。 hbuilder p12 mob req mobile 右擊 文件下載 鑰匙 1.在MAC電腦.鑰匙串串訪問->證書助理->從證書頒發機構請求證書,創建一個證書為certSigningRequest文件 2.在Apple Developer中的Certi

vue跨域的問題,在開發環境

直接 index 文件 訪問 顯示 vue pat user rewrite 找到config文件夾下的index.js proxyTable: { ‘/api‘: { target: ‘http://訪問網址/‘, //設置調

nginx反向代理、負載均衡配置與linux環境的安裝及通過ip域名訪問nginx

本文主題: 一、什麼是nginx 二、nginx的應用場景 三、linux環境下nigix的安裝 四、nginx配置虛擬機器(ip、域名) 五、nginx實現反向代理 六、nginx實現負載均衡 一、什麼是nginx 1、http伺服器(通過nginx配置檔案配置

PyCharm環境io的open()報錯路勁的問題

PS:我也是初學者,上班空閒時間學習學習Python。今天學到io的時候,遇到了兩個用PyCharm環境編寫程式碼的小白錯誤,如下: 兩個問題都是如下程式碼: 1. 第一個問題:當寫好程式碼之後,點選執行報如下錯誤:name 'open' is not defined 報了錯肯定就要研究唄,測試唄,所以我

iOS Debug環境生成dSYM檔案配置

Build Setting Debug Information Format -> DWARF with dSYM File Generate Debug Symbols -> YES 在 Products 資料夾內 Show In Finder

相同資料來源情況,使用Kafka實時消費資料 vs 離線環境全部落表後處理資料,結果存在差異

原因分析: 當某個consumer宕機時,消費位點(例如2s提交一次)尚未提交到zookeeper,此時Kafka叢集自動rebalance後另一consumer來接替該宕機consumer繼續消費,因為先前宕機consumer最近的消費位點尚未提交,導致資料重複消費 突發流量、跨機房(網路請求延