1. 程式人生 > >有關同一解決方案下多個工程相互呼叫的問題

有關同一解決方案下多個工程相互呼叫的問題

最新修改時間:20160515
以前自己在寫C#的時候就經常需要用到這方面的知識,但當時感覺挺容易處理的,也就並沒有留意。現在開始接觸C++,剛開始還是有很多不熟悉的。這裡我不是想講lib和dll的區別,就只是說下如何相互呼叫之間的類並使用吧。

兩個工程之間類呼叫

當我們在同一解決方案下相互之間呼叫類時,假設現有兩個工程A和B,工程A需要呼叫工程B中的class。
首先右擊工程A開啟屬性對話方塊,在通用屬性裡面新增新引用便可以將B檔案新增進去。之後在配置屬性裡面的C/C++的常規目錄裡的附加包含目錄中新增工程B的標頭檔案路徑,只有添加了這個標頭檔案路徑,才能在工程A中使用#include不會報錯。
理論上做到以上兩點,便能夠呼叫了。但是如果我們只是這樣的話是不能夠呼叫的。因為執行時會提示缺少了lib檔案。之所以會這樣是因為我們的兩個工程生成的檔案都是EXE。如果A是啟動專案,那麼需要將B中配置屬性的常規目錄下的專案預設值裡面的配置型別改為“靜態庫(.lib)”,因為只有這樣,B工程才會在debug資料夾下生成lib檔案,執行時才不會出現“不能開啟某lib”的錯誤。

工程呼叫dll中的類

20160515(成功案例)
測試了很多次,也問了一些人才算是清楚瞭如何呼叫,以前自己也嘗試了類似的方法,但都沒有成功過。
參考教材:MSDN演練
首先說說在同一工程下呼叫dll,其實跟靜態類呼叫的配置基本是一樣的。首先需要在通用屬性中將dll工程新增進去。然後在包含目錄中新增dll檔案的標頭檔案地址。以前應該是這樣操作過,但不明白當時為什麼沒有成功。
我們往往用的dll是別人給的,自己測試的結果是,如果是編寫程式還是需要在包含目錄中新增dll檔案的標頭檔案地址的。同時在連結器的輸入選項的附加依賴項中新增相應的lib檔案。同時最重要的一點,需要將dll和lib檔案放在與自己編寫的程式資料夾下面,而不是debug下面。但是當我們執行debug裡面的EXE的時候,則需要把dll和lib放在debug下面。
至於_declspec(dllexport)這樣的宣告,大家可以自己去查相關的說明。

相關推薦

有關同一解決方案工程相互呼叫的問題

最新修改時間:20160515 以前自己在寫C#的時候就經常需要用到這方面的知識,但當時感覺挺容易處理的,也就並沒有留意。現在開始接觸C++,剛開始還是有很多不熟悉的。這裡我不是想講lib和d

一個解決方案 工程 每個工程的環境變數的配置

背景: 一個解決方案下有多個工程,在環境變數中,已經添加了BoostDir和BoostLibs這兩個環境變數。 問題: WorkStation工程中使用的boost的環境變數名字為BoostDir和BoostLibs。 編譯整個解決方案下的所有工程的時候,發現,依然無法識

C#一個解決方案專案如何跨專案頁面跳轉

前言 這個題目有點不太合適。總之,如果你在做一個C#的WebForm專案,專案有點大,於是你在一個解決方案裡面建立很多專案,這樣便於多人協作開發,同時也能根據專案生成多個dll,便於編譯及釋出。但是這樣子就可能遇到以下問題: 專案A的頁面Page1如何跳轉到

VS2015基礎 在同一解決方案,新增多專案

       慈心積善融學習,技術願為有情學。善心速造多好事,前人栽樹後乘涼。我今於此寫經驗,願見文者得啟發。剛開始的時候,是這樣的。解決方案管理器找不到的話,可以通過下面的方式開啟儲存該解決方案的資料

visual studio 2015雜癥(1)——同一解決方案的項目無法互相引用

gpo 感嘆號 net per target 重新 解決方案 studio class 今天用VS新建了一個項目A。 然後在解決方案下添加了曾經已有的項目B。 A引用項目B後現“黃色感嘆號”角標。 A右鍵-properties-Build,Target framework為

Dotnet Core Cli 解決方案項目的相互引用和第三方庫引用

pac todo core 多個項目 json ren .json 三方庫 方案 dotnet add app/app.csproj reference lib/lib.csproj app項目引用lib項目 dotnet add package Newtonsoft.

log4j在tomcat工程的log4j.properties配置

關於tomcat下多個工程配置一個log4j.properties,達到輸出各自的日誌的問題, 經過實際工作的總結和調查,在這裡做出一個總結和備忘。 提起log4j的配置,我們常用的配置辦法是為每個工程建立一個log4j.properties檔案,並在其中寫入自己的輸出日

.net同一個解決方案下面web專案的解決方法

經過n次的google,下面是解決方法: 1. 新建一個web application 2. 在該application中新建資料夾SubSystem 3. 在整個的專案中新增web site。注意這其中的路徑(這裡的路徑是上面新建的資料夾的路徑)。 4. 上面的 工程中

C# vs中使用同一個解決方案的其他工程的類

2018年3月30日09:09:26 1. 在解決方案管理器視窗中,右鍵單擊需要使用其他工程的工程,進入新增,選擇新增引用,新增解決方案下的想要引用的工程 2. 新增完成後即可實現訪

VS2019中,一個解決方案擁有項目,如何快速選擇啟動項目

方法 快速 http png 加粗 mage 解決方案 選擇 啟動 我們在使用VS2019編程中,經常碰到1個解決方案有多個項目的情況。一般都是右鍵點擊項目名稱,選擇“設為啟動項目”。下面介紹一種快速選定啟動項目的方法,如圖:

解決IDEA中專案不在同一視窗顯示的問題(操作簡單)

今天博主在使用IDEA軟體做練習的時候,想要重新new一個專案,一系列流程走完之後發現new的新專案出來了,但是之前的專案卻不見了,或者在另外一個視窗,這個和eclipse不同,顯示不太符合大家的程式設計習慣,網上搜索了一些資料,找到了解決的辦法,現在分享給大家; 首先,如下圖,我的IDEA

解決同一activityfragment 切換時重複執行onCreateView方法

Fragment之間切換時每次都會呼叫onCreateView方法,導致每次Fragment的佈局都重繪,無法保持Fragment原有狀態。 解決的辦法是:在Fragment onCreateV

同一tomcat部署工程log4j衝突的問題

本文來自多個播客轉載拼接而成,時間比較長,因此對於出處不能描述詳盡,在此對各位作者致敬並表示歉意。 同一tomcat伺服器下部署多個專案,容易發生衝突,日誌檔案會同時寫入同一個專案的log目錄中,正常情況下在一個tomcat中只會部署一個專案,此情況發生不多,但是一旦發生,

​獲取阿裏雲同一賬號bucket容量的腳本

sdk oss openapi 阿裏雲 接口調用 執行腳本前的準備工作請移步:http://chenx1242.blog.51cto.com/10430133/1968378 這篇文章裏看,下面就是完整的腳本內容。#!/usr/bin/env python # -*- coding: UT

同一臺機器上tomcat啟動造成的內存溢出問題的解決方法。

-xms maxperm size blog 內存溢出 max gpo 解決 rms 加下面這句話就行了,我是WIN10+雙tomcat+nginx(本地站點),無壓力。在編譯器的vm option裏面加哦。 -server -Xms512m -Xmx1024m -X

intellij idea在project同時開啟工程(maven工程

前提:我的工程都是maven工程   我有兩個工程,一個是介面contract,一個是介面的具體實現server。想要同時在一個工作空間下展示,方便除錯開發,載入後效果如下   idea有workspace的概念,即工作空間。支援多個工程在一個

Linux檔案的C++工程編寫、編譯要點

編譯流程: 假定有三個檔案:main.cpp: #include <iostream> #include "include/func1.hpp" int main(){ cout<<"this is main"<<endl; fu

同一臺伺服器部署WEB應用,SESSION衝突的解決方法

  由於一臺伺服器上使用Tomcat部署多個WEB專案,而專案因為用到框架都是一樣的,導致同時執行,session相互衝突,這個登入後,那個就得重新登入,造成了使用不方便,解決辦法如下: 在server.xml檔案,host的標籤頁下,加上Context標籤,標籤內容可以這樣寫: <Contex

同時獲取同一等級class值的節點的方法

 方法: tr_= soup.find("div", class_="mod_cont fcolor30").find_all("tr", attrs={"class":["md_tr font14 bgcolor-s","md_tr font14 bgcolor"]})

關於在 Linux 不相干的程序互斥訪問同一片共享記憶體的問題

這裡的“不相干”,定義為: 這幾個程序沒有父子關係,也沒有 Server/Client 關係這一片共享記憶體一開始不存在,第一個要訪問它的程序負責新建也沒有額外的 daemon 程序能管理這事情 看上去這是一個很簡單的問題,實際上不簡單。有兩大問題: 程序在持有互斥鎖的