在Visual Studio中访问被拒绝运行程序

问题描述 投票:7回答:3

到目前为止,我仅使用Linux编写C ++代码,但我想学习在Windows中以及使用CMake简化代码。

开始,我写了以下CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)  
PROJECT( CMakeWin )

SET(CMAKE_BUILD_TYPE Release)

# find opencv and set variables
Set(OpenCV_DIR C:/Users/Erik/Documents/Libraries/opencv/build)
FIND_PACKAGE(OpenCV REQUIRED)


#set the default path for built executables to the "bin" directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

ADD_EXECUTABLE( ${PROJECT_NAME}
src/main.cpp 
)


TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})

[当我运行CMake(使用Visual Studio 11配置)时,它似乎可以正常工作,但是当我打开CMakeWin.sln项目并生成然后运行它时,我得到了

Unable to start program C:\..... The system cannot find the file 
specified.

但我也收到了

access denied.

当我直接转到Release或Debug文件夹并运行时

CMakeWin.exe

它会按原样运行。可能是什么问题?

编辑:

为了避免使Visual Studio尝试运行ALL_BUILD,我必须将CMakeWin设置为StartUp项目。请参阅https://simtk.org/forums/viewtopic.php?f=91&t=3676和下面的注释。

visual-studio-2012 cmake
3个回答
4
投票

在Visual Studio中,打开项目属性对话框(在解决方案资源管理器窗格中右键单击该项目,然后选择属性)。转到调试,查看运行该应用程序的命令行是什么。这很可能是错误的。


2
投票

CMake使用与Linux上相同的配置。简单项目的通用结构是将源文件,编译文件和可执行文件放在同一目录中。因此,您可以从同一目录进行编译和运行。

MSVC默认配置(我不知道如何更改它,我也不敢这么做)”每个configuration使用一个文件夹。您可以根据需要设置任意数量,常见的是DebugUnicode,ReleaseUnicode,DebugAnsi和ReleaseAnsi。

共同的结构是:

  • 顶级文件夹:解决方案
    • 解决方案中每个项目一个文件夹(一个解决方案可以包含多个项目):源文件
      • 用于资源文件(图标等)的res文件夹(可选)
      • 每个配置中的文件夹,调试+发行版:对象和可执行文件

因此,根据设计可执行文件与解决方案不在同一文件夹中。您可以通过给出它们的相对路径从那里执行它们:Debug\project.exe


0
投票

在Visual Studio中,右键单击您的项目并将其标记为“设置为启动项目”。

© www.soinside.com 2019 - 2024. All rights reserved.