当前位置:编程学堂 > vs2010验证_VS2010远程调试环境详细配置(Windows用户验证)

vs2010验证_VS2010远程调试环境详细配置(Windows用户验证)

  • 发布:2023-10-05 08:39

远程调试说明:

Windows远程调试有两种连接方式:无认证和Windows用户认证。两种调试方式:附加到进程、直接调试。这里介绍的是Windows用户认证下的直接调试方法。

1.先说明一下准备工作:

(1) 关闭两台机器的防火墙。

(2)两台机器在同一个局域网内,需要能够互相ping通。

(3)由于采用Windows认证,因此要求两台机器使用相同的用户名登录Windows,并且密码必须相同且不能为空。

2、打开VS项目,项目属性---->调试,如下图:

3.两台机器:VS项目所在机器为A,exe所在机器为B。 ?

上图中:

? ? ?在框 1 中选择远程 Windows 调试器。

框 2:远程 B 上要调试的 exe 程序的位置和绝对路径。

框3:这是Remote B上exe程序的工作目录,也就是exe所在的目录。

框 4:是远程 B 的 IP 地址

4. 将VS中内置工具Remote Debugger(32位或64位,取决于要调试的程序)复制到Remote B。

5. 以管理员身份运行Remote Debugger,选择Tools——>Options,如图所示选择,点击OK。

6. 远程机器配置完成后,返回本地计算机A,按F7编译生成.exe和.pdb文件,并将这两个文件复制到远程B的工作目录,即方框3中在步骤“2”目录中(注意:生成的exe和pdb文件的名称必须与步骤“2”中框2中的名称相同)。

然后就可以按F5进行调试了。与本地调试相同。

【补充说明】

》能否添加断点调试与是否使用Windows用户认证无关,关键是源代码必须与目标程序版本一致,且源代码同目录下有pdb文件目标计划”

关于 pdb 文件:

请参考网上解释:

http://www.sychzs.cn/itech/archive/2011/08/15/2136522.html

http://www.sychzs.cn/devcenter/jrobbins/pdb-files-what-every-developer-must-know

目前只有测试工作中使用比较频繁的:

智能指针

shared_ptr

#包括

std::shared_ptr a(新A);

----支持!还支持 make_shared

weak_ptr ----支持,毕竟这是辅助shared_ptr的指针模板unique_prt ----支持! ,但是不支持make_unique,这也很正常,毕竟这是C++14的语法。

综上所述,在VS2010中可以使用智能指针。

auto型自推导

向量 v_ints;

v_ints.push_back(1);

v_ints.push_back(2);

auto it = v_ints.cbegin();

std::cout << *it <

auto a = make_shared();

自动 b = a;

------支持!

lambda 表达式

构造一个闭包:一个能够捕获作用域内变量的未命名函数对象。

c++11中有以下三种语法:

[ 捕获 ] ( params ) -> ret_type { body } (1) [ 捕获 ] ( params ) { body } (2) [ 捕获 ] { body } (3)

理论上都是第一种语法的简化版本,可以根据需要使用,

闭包是具有上下文的函数。说白了就是一个有状态函数

函数是代码,状态是一组变量。将代码绑定到一组变量形成一个闭包。

C++中实现闭包的三种方法

重载运算符()

因为闭包是一个函数+一个状态,所以这个状态是通过隐式的this指针传入的。所以闭包必须是一个函数对象。因为成员变量是保存状态的优秀工具,所以实现了operator()运算符重载,并且该类的对象可以用作闭包。默认传入的this指针提供了访问成员变量的方式。 (其实这就是lambda和bind的原理。)

类 MyFunctor

{

公众:

MyFunctor(float f) : round(f) {}

int 运算符()(float f) { return f + round; }

私人:

浮圆;

};

浮动轮 = 0.5;

MyFunctor f(round);

lambda 表达式

浮动轮 = 0.5;

auto f = [=](float f) { return f + round; }

? C++11中的Lambda是闭包的实现。

boost::绑定/std::绑定

int boost_func(float f, float round)

{ 返回 f + round; }

浮动轮 = 0.5;

boost::function f = boost::bind(boost_func, _1, round);

闭包的状态特定于其运行的上下文。闭包将存储它运行所需的上下文,从而确保创建闭包时的上下文在闭包运行时保持有效。

例如,round 是闭包的上下文。这种保存上下文的功能通常称为“捕获”或“绑定”。 capture可以自己写,比如MyFuctor f(round);或者你可以使用 boost::bind 。

vs2010测试:

int make_i = 3;

自动 f = [=](int x){

std::cout << x << make_i << '\n';

};//这里;不能省略

f(make_i);

-----支持!

支持匿名表达式意味着支持闭包。在C++中,闭包并不那么出名。毕竟这个概念是前端JS创造出来的。但是知道了lambda表达式,我们就可以精简代码了,以后有计划补充学习记录。你可以先参考这里。

for_each

可能的实施

模板

UnaryFunction for_each(首先输入,最后输入,UnaryFunction f)

{

for (;第一个!=最后一个;++第一个) {

f(*第一个);

}

返回 f;

}

循环遍历所有元素,并使用f函数处理所有元素(迭代器)。

测试 for_each 中的 lambda 表达式

#包括

for_each(v_ints.begin(),v_ints.end(),[](int val){

cout << val << endl;

});

------支持!

基于范围的 for 循环

向量 v_ints;

v_ints.push_back(1);

v_ints.push_back(2);

for (const int& i : v_ints) // 通过 const 引用访问

std::cout << i << ' ';

std::cout << '\n';

编译错误。

----不支持!

正则表达式

测试:

std::string fnamesstring[] = {"foo.txt", "bar.txt", "baz.dat", "zoidberg"};

向量 fnames(fnamesstring,fnamesstring+4);

std::regex txt_regex("[a-z]+\\.txt");

for_each(fnames.begin(),fnames.end(),[&](const string &fname){

std::cout << fname << ": " << std::regex_match(fname, txt_regex) << '\n';

} );

-----支持!

绑定功能模板

函数模板bind为f生成一个转发调用包装器。调用此包装器相当于调用 f 并将其一些参数绑定到 args。

---- 函数模板绑定为 f 生成一个前向调用包装器。调用此包装器相当于调用 f 并将其一些参数绑定到 args。 (机器翻译很感人)

我个人的理解是,绑定函数模板可以在更广的范围内使用某些函数,比如嵌套绑定子表达式函数、绑定类成员函数,甚至类成员变量。

验证码:

#包括

void f(int n1,int n2,int n3,int n4,int n5){

cout << n1 <<" "<< n2 <<" "<

}

使用命名空间 std::placeholders;

void f(int n1,int n2,int n3,int n4,int n5);

auto b = 绑定(f,2,_1,_2,4,5);

b(100,200);

-----支持!

其他

vector v_ints = {1,2,3,4,5,6,2,4,3};vs2010不支持这样的初始化

可能的修改:

int ints[] = {1,2,3,4,5,6,2,4,3};

向量 v_ints(ints,ints+9);

转载于:https://www.sychzs.cn/Stultz-Lee/p/10036207.html

VS2010 + OpenCV2.4.3 + Windows 窗体应用程序

转载地址:http://www.sychzs.cn/detail/gdwuyihua/4814502

(注:如需引用本文,请先征得我的同意!)

(原创)VS2010中Windows Form应用中OpenCV的实现

以下是我亲自验证的,包括详细具体的安装、编译和注意事项,完全可以参考!希望能够帮助OPENCV爱好者(尤其是新人)少走弯路。如果需要源代码,可以邮件询问(附件)。

VS2010 + OpenCV2.4.3

================================================= == =====

1.OpenCV的编译安装:

1.解压OpenCV-2.4.3.exe -> D:/OpenCV/Resources/OpenCV-2.4.3/opencv

2. 运行 CMake...为 VS 编译...

源代码在哪里:D:/OpenCV/Resources/OpenCV-2.4.3/opencv

构建二进制文件(目标)的位置:D:/OpenCV/Resources/OpenCV-2.4.3/opencv/vs2010

配置:选择 Visual Studio 10/?

生成:生成目标

3.打开D:/OpenCV/Resources/OpenCV-2.4.3/opencv/vs2010,使用对应版本的VS打开OpenCV.sln...

A. 编译 OpenCV 解决方案的 Debug 版本:

1. 编译 OpenCV 解决方案(Debug):在 VS 工作区界面左侧的 Solution Explorer 中选择最上面的解决方案“Solution 'OpenCV' (61projects)”,确保 SolutionConfig 为 Debug,右侧为-点击执行Build Soluton(编译计划);

2.编译ALL_BUILD项目(Debug):在VS工作区界面左侧Solution Explorer列表中选择项目“ALL_BUILD”,确认Solution Configure为Debug,右键执行Build(编译项目) ;

3.编译CMakeTargets\INSTALL项目(Debug):在VS工作区界面左侧Solution Explorer列表中选择“CMakeTargets\INSTALL”项目,确保Solution Configure为Debug,右键执行构建(编译项目);

B.编译OpenCV解决方案发布版本:

1.编译OpenCV解决方案(Release):在VS工作区界面左侧的Solution Explorer中选择最上面的解决方案“Solution 'OpenCV'(61个项目)”,确认Solution Configure为Release,右侧-点击执行Build Soluton(编译计划);

2、编译ALL_BUILD项目(Release):在VS工作区界面左侧Solution Explorer列表中选择项目“ALL_BUILD”,确认Solution Configure为Release,右键执行Build(编译项目) );

3、编译CMakeTargets\INSTALL项目(Release):在VS工作区界面左侧Solution Explorer列表中选择“CMakeTargets\INSTALL”项目,确认Solution Configure为Release,右键执行构建(编译项目);

4.查看编译结果:

D:\OpenCV\Resources\OpenCV-2.4.3\opencv\vs2010\bin:有两个目录Debug/Release及相关文件资源;

D:\OpenCV\Resources\OpenCV-2.4.3\opencv\vs2010\lib:有两个目录Debug/Release及相关文件资源;

D:\OpenCV\Resources\OpenCV-2.4.3\opencv\vs2010\install:有三个目录bin/include/lib及相关文件资源;

其他不需要

5. 应用配置:

将编译好的目录 D:\OpenCV\Resources\OpenCV-2.4.3\opencv\vs2010\install 复制到 C:\ 并重命名为 C:\opencv;

b.添加OSXP系统变量Path:c:\opencv\bin(供OpenCV exe应用程序调用);

c.添加OSXP系统变量OPENCV:值为:C:\opencv;

---------------------------------------------------------

2. 程序项目配置:

特别注意:配置工程属性时,要注意Debug/Release版本配置项的统一,否则会导致可能的编译错误,如:Common Language Runtime Support(公共语言运行时支持) :Common Language Runtime Support/(clr)(公共语言运行时支持(/clr)),否则会导致编译错误!

6.VS应用程序(VS2010.控制台应用程序):

6.1,VS项目属性中的设置如下:

6.1.1,配置属性/...

a,一般:

MFC 的使用:使用标准 Windows 库

ATL 的使用:不使用 ATL

Common Language Runtime Support: No Common Language Runtime Support(无公共语言运行时支持,其他选项会导致错误)

b,C/C++/通用:

附加包含目录:C:\opencv\include;c:\opencv\include\opencv;C:\opencv\include\opencv2(可以检查从父级继承或项目默认值)或项目默认值))

c,链接器/通用:

附加库目录:C:\opencv\lib(您可以选中从父级或项目默认继承)

上面两个设置b、c(附加包含目录、附加库目录)可以替换为以下d中的等效设置:

d,(VS2005没有此项)VC++目录:

包含目录:C:\opencv\include;c:\opencv\include\opencv;C:\opencv\include\opencv2(您可以选中从父级或项目默认继承默认值))

库目录:C:\opencv\lib(您可以选中从父级或项目默认继承)

e、链接器/输入/附加库:引入项目属性的库:

发布版本:............

opencv_core243.lib

opencv_highgui243.lib

opencv_video243.lib

opencv_photo243.lib

opencv_calib3d243.lib

opencv_contrib243.lib

opencv_features2d243.lib

opencv_flann243.lib

opencv_gpu243.lib

opencv_imgproc243.lib

opencv_legacy243.lib

opencv_ml243.lib

opencv_nonfree243.lib

opencv_objdetect243.lib

opencv_stitching243.lib

opencv_ts243.lib

opencv_videostab243.lib

调试版本................................

opencv_core243d.lib

opencv_highgui243d.lib

opencv_video243d.lib

opencv_photo243d.lib

opencv_calib3d243d.lib

opencv_contrib243d.lib

opencv_features2d243d.lib

opencv_flann243d.lib

opencv_gpu243d.lib

opencv_imgproc243d.lib

opencv_legacy243d.lib

opencv_ml243d.lib

opencv_nonfree243d.lib

opencv_objdetect243d.lib

opencv_stitching243d.lib

opencv_ts243d.lib

opencv_videostab243d.lib

6.2,在VS项目包含源码引用:

// 可用...

#include

#include

#include

#pragma comment( lib, "opencv_highgui243d.lib" )

#pragma comment( lib, "opencv_core243d.lib" )

#pragma comment( lib, "opencv_ml243d.lib" )

#pragma comment( lib, "opencv_imgproc243d.lib" )

使用命名空间 cv;

3. 程序代码(按钮事件):

//按钮显示事件处理...

namedWindow("show_image",WINDOW_AUTOSIZE);

Mat src = imread("d:/opencv.jpg");

//while(1)

{

imshow("show_image", src);

//char c = waitKey(0);

//if(27 == ' ')

//返回0;

}

//返回0;

================================================= == ===============================================

资源:VS2010 + OpenCV2.4.3 + Windows 窗体应用程序

1. VS 项目属性中的设置如下:

6.1.1,配置属性/...

a,一般:

MFC 的使用:使用标准 Windows 库

ATL 的使用:不使用 ATL

公共语言运行时支持:公共语言运行时支持/(clr)

b,C/C++/通用:

附加包含目录:c:\opencv\include;c:\opencv\include\opencv;c:\opencv\include\opencv2(可以检查从父级继承或项目默认值)或项目默认值))

c,链接器/通用:

附加库目录:c:\opencv\lib(您可以选中从父级或项目默认继承)

上面两个设置b、c(附加包含目录、附加库目录)可以替换为以下d中的等效设置:

d,(VS2005没有此项)VC++目录:

包含目录:c:\opencv\include;c:\opencv\include\opencv;C:\opencv\include\opencv2(您可以选中从父级或项目默认继承默认值))

库目录:c:\opencv\lib(您可以选中从父级或项目默认继承)

e、链接器/输入/附加库:引入项目属性的库:

发布版本:............

opencv_core243.lib

opencv_highgui243.lib

opencv_video243.lib

opencv_photo243.lib

opencv_calib3d243.lib

opencv_contrib243.lib

opencv_features2d243.lib

opencv_flann243.lib

opencv_gpu243.lib

opencv_imgproc243.lib

opencv_legacy243.lib

opencv_ml243.lib

opencv_nonfree243.lib

opencv_objdetect243.lib

opencv_stitching243.lib

opencv_ts243.lib

opencv_videostab243.lib

调试版............

opencv_core243d.lib

opencv_highgui243d.lib

opencv_video243d.lib

opencv_photo243d.lib

opencv_calib3d243d.lib

opencv_contrib243d.lib

opencv_features2d243d.lib

opencv_flann243d.lib

opencv_gpu243d.lib

opencv_imgproc243d.lib

opencv_legacy243d.lib

opencv_ml243d.lib

opencv_nonfree243d.lib

opencv_objdetect243d.lib

opencv_stitching243d.lib

opencv_ts243d.lib

opencv_videostab243d.lib

2. 在 VS 项目源代码中包含引用:

//包含引入OpenCV所需的文件...

#include

#include

#include

//选择调试/发布...

#ifdef _DEBUG

#pragma comment( lib, "opencv_highgui243d.lib" )

#pragma comment( lib, "opencv_core243d.lib" )

#pragma comment( lib, "opencv_ml243d.lib" )

#pragma comment( lib, "opencv_imgproc243d.lib" )

#else

#pragma comment( lib, "opencv_highgui243.lib" )

#pragma comment( lib, "opencv_core243.lib" )

#pragma comment(lib, "opencv_ml243.lib")

#pragma comment( lib, "opencv_imgproc243.lib" )

#endif

使用命名空间 cv;

3. 程序代码(按钮事件):

//按钮显示事件处理...

namedWindow("show_image",WINDOW_AUTOSIZE);

Mat src = imread("../opencv.jpg");

//while(1)

{

imshow("show_image", src);

//char c = waitKey(0);

//if(27 == ' ')

//返回0;

}

//返回0;

相关文章