顯示具有 VisualStudio 標籤的文章。 顯示所有文章
顯示具有 VisualStudio 標籤的文章。 顯示所有文章

2017年7月5日 星期三

C++ 如何辨識代碼是在 gcc 上面跑還是 vc 上跑

C++ 如何辨識代碼是在 gcc 上面跑還是 vc 上跑

有些時候我們會需要能夠識別到底是在 gcc 上還是 visual Studio 上跑,畢竟兩者之間相容性還是有很大區別的,可以利用 Macro 來偵測。
如以下範例,把代碼打在裡面就自然會在正確的編譯器上運行了。
#if defined(_MSC_VER) 
   /* VC */
#endif

#if defined(__GNUC__)
   /* gcc */
#endif

2017年6月21日 星期三

[圖文] OpenCV 3.4.1 安裝配置在 Visual Studio 2017

[圖文] OpenCV 3.4.1 安裝配置在 Visual Studio 2017


1. 新版的 Visual Studio 2022 + OpenCV490 可以參考新文章https://charlottehong.blogspot.com/2024/02/opencv-490-win11-visual-studio-2022.html







2. Visual Studio 2019 + OpenCV401 可以參考新文章
https://charlottehong.blogspot.com/2019/02/opencv-401-visual-studio-2019.html

正文開始

先到官方下載這兩項軟體 (點擊有連結)
關於 Visual Studio 2017 如何安裝可以參考 https://charlottehong.blogspot.com/2018/09/c-visual-studio-2017.html
建議直接解壓縮到C槽,本文範例即直接解壓縮到C


文件說明

build文件是官方已經幫你預先編譯好的檔案,開進去
C:\opencv\build\x64\vc15\bin
可以看到vc15 的字樣,這是給 visual studio 2017 用的。
總而言之會用到的只有
  • C:\opencv\build\include
  • C:\opencv\build\x64\vc15


部屬 OpenCV

首先只要做一次就好的是
  • 系統環境變數加入 bin 路徑
編譯器大概需要三個步驟(每次第一次開新專案)
  • 編譯器加入 include 路徑
  • 編譯器加入 lib 路徑
  • 編譯器加入 lib 檔案

環境變數(說明文字在圖下)

搜索一下你的電腦環境變數或系統內容都可以(也可以直接對著本機按右鍵內容)
(點擊放大)位置是:C:\opencv\build\x64\vc15\bin
如果在設定環境變數之前就已經先打開 Visual Studio 的話,需要重新啟動 Visual Studio ,沒有重開編譯的時候會出現 “找不到**.dll檔案”
標記一下蠻常出現的錯誤
LNK1104 無法開啟檔案 'opencv_worldXXXd.lib'
這個是環境變數這個步驟做錯了

設定編譯器

打開新專案
選擇傳統式精靈,專案名稱就隨意打一個不影響
打勾空白專案,(這裡其實可選,文章為方便撰寫使用空白專案)
再來對著專案按右鍵新增檔案
可以改名字,這邊我就直接按新增了
再來要進入設定裡面設置,留意一下紫色的框框待會會用到
截圖截錯了,以下 紫色框框要選 x64 模式  (OpenCV 提供的預編檔案只有x64)
截圖截錯了,以下 紫色框框要選 x64 模式  (OpenCV 提供的預編檔案只有x64)
進來之後對照一下紫色框框,兩個要一樣才有用(總共會有4種組合)
貼上include的路徑:C:\opencv\build\include
這裡貼上 lib 的路徑:C:\opencv\build\x64\vc15\lib
一樣留意一下紫色的框框
這裡需要指定引入那些 *.lib 檔案
我們進來opencv的文件裡面看
根據你的模式設定(留意紫色框框)
好了之後貼上測試代碼
/**********************************************************
Name :
Date : 2016/05/29
By   : CharlotteHonG
Final: 2016/05/29
**********************************************************/
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char const *argv[]) {
    /* 畫布 */
    Mat img(270, 720, CV_8UC3, Scalar(56, 50, 38));
    /* 直線 */
    line(img, Point(20, 40), Point(120, 140), Scalar(255, 0, 0), 3);
    /* 實心方塊 */
    rectangle(img, Point(150, 40), Point(250, 140), Scalar(0, 0, 255), -1);
    /* 實心圓 */
    circle(img, Point(330, 90), 50, Scalar(0, 255, 0), -1);
    /* 空心橢圓 */
    ellipse(img, Point(460, 90), Size(60, 40), 45, 0, 360, Scalar(255, 255, 0), 2);
    /* 不規則圖形 */
    Point points[1][5];
    int x = 40, y = 540;
    points[0][0] = Point(0 + y, 50 + x);
    points[0][1] = Point(40 + y, 0 + x);
    points[0][2] = Point(110 + y, 35 + x);
    points[0][3] = Point(74 + y, 76 + x);
    points[0][4] = Point(28 + y, 96 + x);
    const Point* ppt[1] = { points[0] };
    int npt[] = { 5 };
    polylines(img, ppt, npt, 1, 1, Scalar(0, 255, 255), 3);
    /* 繪出文字 */
    putText(img, "Test Passed !!", Point(10, 230), 0, 3, Scalar(255, 170, 130), 3);
    /* 開啟畫布 */
    namedWindow("OpenCV Test By:Charlotte.HonG", WINDOW_AUTOSIZE);
    imshow("OpenCV Test By:Charlotte.HonG", img);
    waitKey(0);
    return 0;
}
留意一下紫色框框是不是跟你剛剛設定的一樣 (這邊我已經發現錯了改回x64)
如果做到這邊才發現跟我一樣選錯了,要退回去include路徑那步重作
設定裡面 x86->x64 改了全部會歸零…

運行

設定好之後直接按F5運行吧~~
出現找不到 dll 檔案,重新啟動一下 Visual Studio 2017 。


其他

如果需要完整的OpenCV功能,比如說 SIFT 等這些實作需要自己重新編譯,重新編譯可以參考這篇站內文,手動編譯原始檔的方法。
http://charlottehong.blogspot.com/2017/07/opencv-320-contrib-visual-studio.html

2017年6月4日 星期日

如何在 Visual Studio 2017 使用 bits/stdc++.h

如何在 Visual Studio 2017 使用 bits/stdc++.h


gcc 有個便捷的功能,使用
#include <bits/stdc++.h>
可以一次載入全部的頭文件,你可以不用去思考缺了那些沒補上。
bits/stdc++.h 這份文件是 gcc 自己非標準檔案,VS並沒有也沒有替代方案,作法就是從gcc裡面複製出來,拷貝到VS裡面。
這裡以 Visual Studio 2017 為例,將 gcc 7.1.0 版本的檔案複製進去。
如果你的VS版本不是這個版本也可以使用,只是路徑會不一樣而已。
檔案我已經幫你準備好了,你可以從以下載點獲得:
下載:Visual Studio use stdc++

流程

複製 bits 整個資料夾到以下路徑:(快速點擊3下全選)
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\include
編譯器版本不一樣路徑會變,自己手動開進去找,大概就是2017還有14.10.25017這兩個會變吧。

2017年5月23日 星期二

Visual studio 如何更換C++標準 使用 C++11 或 C++14

Visual studio 如何更換C++標準 使用 C++11 或 C++14

這個要在個別的專案設定,每開一個新專案就重新設定一次
然後在這裡
或者直接安裝新版的2017,預設就是C++14了

2016年11月7日 星期一

Visual Studio 使用方法 02

Visual Studio 使用方法 02



匯入現有檔案

接下來我們要將檔案切成三分
  • Test.hpp
  • Test.cpp
  • Test_main.cpp
請你使用記事本分別,另存下這三個檔案
注意要用另存,電腦預設是不能改副檔名的

Test_Main.cpp

/****************************************************************
Name : Test_Main.cpp
Date : 2016/11/07
By   : CharlotteHonG
Final: 2016/11/07
*****************************************************************/
#include <iostream>
#include "Test.hpp"
using namespace std;

int main(int argc, char const *argv[]){
    Test a(77);
    a.pri();
    return 0;
}

Test.hpp

/*****************************************************************
Name : Test.hpp
Date : 2016/11/07
By   : CharlotteHonG
Final: 2016/11/07
*****************************************************************/
#ifndef TEST_HPP
#define TEST_HPP

class Test{
public:
    Test(int n);
    void pri();
private:
    int num;
};

#endif

Test.cpp

/*****************************************************************
Name : Test.cpp
Date : 2016/11/07
By   : CharlotteHonG
Final: 2016/11/07
*****************************************************************/
#include <iostream>
#include "Test.hpp"
using namespace std;

Test::Test(int n){
    this->num=n;
}
void Test::pri(){
    cout << "num=" << this->num << endl;
}

把檔案放入專案內

加入

拖曳進去

F5 執行

Visual Studio 使用方法 01

Visual Studio 使用方法 01



介紹基本的使用方法,方便完全不會的新手可以快速上手

安裝

記得要選對版本 Community 是免費的~
官方下載:https://goo.gl/3Vy3TR
安裝大概就是一直下一步即可,要注意有一個地方
會要求你選擇需要什麼開發環境,記得打勾C++
預設好像就有勾了,沒勾到事後也還可以安裝

開起專案

這部分建議你先開空專案就好,剩下的等你自己熟悉
再去google會有很多資料,先可以使用才是當務之急
名稱:取一個你要開發有關的英文吧,記得不要取中文
位置:沒什麼特別需求就預設即可
方案名稱:會自己跟著名稱動~

新增檔案

  • 新增空白檔案
  • 匯入現有檔案

新增空白檔案

這邊隨意打一段預設代碼給你測試用
/********************************************
Name : 
Date : 2016/11/07
By   : CharlotteHonG
Final: 2016/11/07
*********************************************/
#include <iostream>
using namespace std;

// Test.hpp
class Test{
public:
    Test(int n);
    void pri();
private:
    int num;
};

// Test.cpp
Test::Test(int n){
    this->num=n;
}
void Test::pri(){
    cout << "num=" << this->num << endl;
}

// Test_main.cpp
int main(int argc, char const *argv[]){
    Test a(77);
    a.pri();
    return 0;
}

新增現有項目

檔名更改成:Test_main.cpp

貼上代碼並按F5執行


篇幅有點長拆兩篇講如何匯入現有檔案
參考:Visual Studio 使用方法 02