Questions tagged «visual-c++»

Microsoft Visual C ++是Windows的C,C ++和C ++ / CLI编译器。编译器的最新版本是Visual C ++2019。编译器支持以下语言:C(支持C90以及Visual Studio 2019中ISO C ++标准的大多数C99和C11部分);C ++(自Visual Studio 2019起支持大多数C ++ 11,C ++ 14和C ++ 17功能以及某些C ++ 20功能)C ++ / CLI(提供与C#等.NET语言的互操作性)。




7
找不到'uint32_t'标识符错误
我正在将代码从Linux C移植到Windows的Visual C ++。 Visual C ++不知道,#include <stdint.h>所以我将其注释掉。 后来,我发现了很多这样的'uint32_t': identifier not found错误。如何解决?
94 c++  c  visual-c++ 


3
Lambda的显式返回类型
当我尝试编译此代码(VS2010)时,出现以下错误: error C3499: a lambda that has been specified to have a void return type cannot return a value void DataFile::removeComments() { string::const_iterator start, end; boost::regex expression("^\\s?#"); boost::match_results<std::string::const_iterator> what; boost::match_flag_type flags = boost::match_default; // Look for lines that either start with a hash (#) // or have nothing but white-space …

5
模块对SAFESEH映像C ++不安全
我正在使用Microsoft Visual Studio 2011 Professional Beta 我正在尝试运行使用cMake和Visual Studio Complier编译的OpenCV C ++文件(http://opencv.willowgarage.com/wiki/Welcome)。 但是,当我去调试项目时,我遇到600多个错误,其中大多数是: 错误LNK2026:对于SAFESEH映像,模块不安全。 这些文件显然在opencv_ffmpeg项目中,但是我找不到它们,我已经查看了Microsoft帮助页面上的safeseh安全异常处理程序页面,但是找不到任何明确的答案。 我想知道是否还有其他人有这个问题,他们是否设法解决了。

4
导入库如何工作?细节?
我知道这对于极客来说似乎很基础。但我想使它变得清晰。 当我想使用Win32 DLL时,通常只调用LoadLibrary()和GetProcAdderss()之类的API。但是最近,我正在使用DirectX9进行开发,并且需要添加d3d9.lib,d3dx9.lib等文件。 我已经足够了解LIB用于静态链接,而DLL用于动态链接。 因此,我目前的理解是LIB包含方法的实现,并且在链接时作为最终EXE文件的一部分静态链接。DLL是在运行时动态加载的,而不是最终EXE文件的一部分。 但是有时,DLL文件会附带一些LIB文件,因此: 这些LIB文件是做什么用的? 他们如何实现目标? 有没有什么工具可以让我检查这些LIB文件的内部? 更新1 检查维基百科之后,我记得这些LIB文件称为import library。但是我想知道它如何与我的主应用程序以及动态加载的DLL一起使用。 更新2 就像RBerteig所说的那样,DLL附带的LIB文件中有一些存根代码。因此,调用顺序应如下所示: 我的主要应用程序-> LIB中的存根->实际目标DLL 那么这些LIB应该包含哪些信息?我可以想到以下几点: LIB文件应包含相应DLL的完整路径。因此,DLL可以由运行时加载。 每个DLL导出方法的入口点的相对地址(或文件偏移量?)应在存根中进行编码;因此可以进行正确的跳转/方法调用。 我对吗?还有更多吗? 顺便说一句:是否有任何工具可以检查导入库?如果我能看到它,就不会再有疑问了。
87 c++  c  windows  visual-c++ 


3
Win32上将double类型转换为unsigned int会截断为2,147,483,648
编译以下代码: double getDouble() { double value = 2147483649.0; return value; } int main() { printf("INT_MAX: %u\n", INT_MAX); printf("UINT_MAX: %u\n", UINT_MAX); printf("Double value: %f\n", getDouble()); printf("Direct cast value: %u\n", (unsigned int) getDouble()); double d = getDouble(); printf("Indirect cast value: %u\n", (unsigned int) d); return 0; } 输出(MSVC x86): INT_MAX: 2147483647 UINT_MAX: …

7
如何从C调用C ++函数?
我知道这个。 从C ++调用C函数: 如果我的应用程序是C ++,并且必须从用C编写的库中调用函数,那么我会使用 //main.cpp extern "C" void C_library_function(int x, int y);//prototype C_library_function(2,4);// directly using it. 这不会破坏名称C_library_function,链接器将在其输入* .lib文件中找到相同的名称,从而解决了问题。 从C调用C ++函数??? 但是在这里,我扩展了一个用C编写的大型应用程序,我需要使用一个用C ++编写的库。C ++的名称修改在这里引起麻烦。链接器抱怨未解析的符号。好吧,我不能在我的C项目上使用C ++编译器,因为那打破了很多其他东西。出路是什么? 顺便说一句,我正在使用MSVC
84 c++  c  visual-c++  extern-c 

11
为什么Visual Studio 2010无法找到/打开PDB文件?
我正在尝试在VS 2010中使用OpenCV。我是一个业余爱好者,我正在从OpenCV Wiki学习入门。但是,当尝试调试我的项目时,出现以下错误: 'C:\ Windows \ SysWOW64 \ ntdll.dll',找不到或打开PDB文件'C:\ Windows \ SysWOW64 \ kernel32.dll',找不到或打开PDB文件'C:\ Windows \ SysWOW64 \ kernellbase。 dll”,无法找到或打开PDB文件 我将这些文件放在正确的目录中,为什么它不能打开它们?我应该怎么做才能解决这个问题?

21
从路径获取文件名
从路径获取文件名的最简单方法是什么? string filename = "C:\\MyDirectory\\MyFile.bat" 在这个例子中,我应该得到“ MyFile”。没有扩展名。
82 c++  visual-c++ 


8
Visual Studio 2010奇怪的“警告LNK4042”
我刚刚被Visual Studio 2010(C ++)发出的一些不重要的警告打了头(或几乎没有)。 编译结果如下: 1 Debug \ is.obj:警告LNK4042:对象指定了多次;忽略了其他功能 1 Debug \ make.obj:警告LNK4042:对象指定了多次;忽略了其他功能 1 Debug \ view.obj:警告LNK4042:指定的对象不止一次;额外功能被忽略 1 identity.obj:错误LNK2019:void __cdecl test::identity::view(void)函数void __cdecl test::identity::identity(void)(?identity @ 0test @@ YAXXZ)中引用的未解析外部符号(?view @ identity @ test @@ YAXXZ) 1 identity.obj:错误LNK2019:未解析的外部符号void __cdecl test::identity::make(void)(?make函数void __cdecl test::identity::identity(void)(?identity @ 0test @@ YAXXZ)中引用的@ identity @ test @@ YAXXZ) 1 range.obj:错误LNK2019:void …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.