Articles of 视觉工作室2010年

Windows的libffmpeg不链接(Visual Studio)?

所以,我试图让我写一个项目链接到ffmpeg库,但我不断收到链接错误: 1>GLViewLASReader.obj : error LNK2001: unresolved external symbol "struct AVCodec * __cdecl avcodec_find_encoder(enum AVCodecID)" (?avcodec_find_encoder@@YAPEAUAVCodec@@W4AVCodecID@@@Z) 1>GLViewLASReader.obj : error LNK2001: unresolved external symbol "int __cdecl av_dict_set(struct AVDictionary * *,char const *,char const *,int)" (?av_dict_set@@YAHPEAPEAUAVDictionary@@PEBD1H@Z) 1>GLViewLASReader.obj : error LNK2001: unresolved external symbol "int __cdecl avcodec_encode_video(struct AVCodecContext *,unsigned char *,int,struct AVFrame const *)" (?avcodec_encode_video@@YAHPEAUAVCodecContext@@PEAEHPEBUAVFrame@@@Z) 1>GLViewLASReader.obj : error LNK2001: […]

如何以编程方式在Windows中closures打开的文件/应用程序?

我正在将数据写入一个csv文件作为操作的结果。 比我在Excel中打开文件来检查数据。 很多时候我忘了在Excel中closures文件,下一个操作不能写入同一个文件。 它看起来非常困难,如果不是不可能,但有没有一种方法,我可以编程closures文件(=使用该文件的应用程序),然后再写入它? 我想第一件事就是确定哪个应用程序正在使用该文件,然后closures该应用程序? 也许有人写了这个或什么类的?

全局closuresC ++新的运算符例外

有什么办法可以全局closuresnew运营商的例外情况吗? 如果有不止一个,哪个最好? 我试过这个,但我真的不知道在这: #include <new> using std::nothrow; 我试着用“使用std :: nothrow;”来search,但是没有结果。 我正在使用MSVC 2010。 当然我知道new (std::nothrow) myClass();

需要帮助将一些LPCTSTR传递给C ++中的函数

我对C ++很陌生,有一个可能很明显的问题。 我能够使用MSDN示例安装一个服务(http://msdn.microsoft.com/en-us/library/ms682450%28v=VS.85%29.aspx)如果我有一个独立的程序。 我试图把这个作为一个函数添加到另一个项目中,并且无法传递名称,二进制path等所需的LPCTSTRstring。 到目前为止我已经尝试过: int Install(LPCTSTR serviceName, LPCTSTR serviceDisplayName, LPCTSTR servicePath); 我知道这是错误的,但我很难找出我应该使用的东西。 即使是指向解释的链接也没问题。 谢谢!

奇怪的行为在这个结构中消失

#include <iostream> using namespace std; #pragma pack(push, 4) struct Foo { char ch; //1 char ch2; //1 char ch3; //1 char ch4; //1 _4 char ch5; //1 short num; //2 char ch6; //1 _4 int num2; //4 _4 }; #pragma pack(pop) int main() { cout << sizeof( Foo ); return 0; } 为什么输出是16字节? 我以为它一定是12,因为: 4 […]

如何使用C ++中的WORD,UCHAR,ULONG,USHORTtypes?

我已经在Visual Studio 2010中创build了一个Win32控制台项目。在这个项目中,我想使用具有相应标题的外部库。 头文件包含声明为的variables UCHAR ULONG USHORT 字 如上所述,在captitals。 在C ++中做了很less的编程,我不认识这些types,并且每行包含它们的代码都有错误: WORD myVariable; 错误: 错误C2146:语法错误:缺less';' 在标识符“myVariable” 这可能是一个非常简单的事情,但是想要一些帮助来增加我的C ++知识。 我需要什么才能使用这些types?

Visual Studio 2010 win32编译的应用程序不能在Windows XP上工作

我正在开发一个应该在所有Windows平台上运行的项目。 它是用c ++编写的,只使用Windows API。 当我在Windows XP上的Visual Studio 6中编译它时,我可以在Windows XP上运行它。 当我在Visual Studio 2010中运行它并在Windows XP上运行它时,它不起作用。 我在Windows XP SP3上安装了vcredist2010_x86 , vcredist2010sp1_x86和.NET版本3.5和4.0。 但它仍然不起作用。 我将以下预处理器符号添加到我的项目中: #define _WIN32_WINNT 0x0501 #define WINVER 0x0501 #define NTDDI_VERSION 0x0501 但它仍然不起作用。 我的VS 2010平台工具集是v100 。 问题 :使用Visual Studio 2010编译应用程序需要做什么,可以在Windows XP上执行?

Windows ListView控件(或类似的),可以有多列checkbox?

好的,所以我的Windows应用程序涉及一个窗​​口,其中包含一个窗格中的对象列表。 每个对象都有8个布尔值,需要确定 – 所以我想要一个列表的对象,八列之后的checkbox。 我不使用MFC,应该是相关的。 ListView 看起来是我想要的方式,但显然它不接受SubItems中的checkbox( LVS_EX_CHECKBOXES样式只给每一行checkbox在左边)。 所以我需要的是ListView的替代方法, 它允许这样做。 我一直在寻找,但没有发现似乎工作。 我已经看到一些DataGridView控件的引用,但我没有看到作为我的Visual Studio 2010“工具箱”中的一个选项 – 如何访问它,它甚至可用于非MFC的C ++项目? 大多数引用它似乎是为VB或C#。 我发现的另一件事是这个自定义的ListView ,但它似乎是C#而不是C ++。 我肯定会接受关于如何在我的代码中使用这个资源的build议,如果有一个简单的方法来与C#对话(我完全不熟悉C#)进行交互的话。 无论如何,任何人的想法,build议或提示,将不胜感激! 编辑:这应该可能会在一个新的问题,但它似乎并不真的看起来值得自己的整个问题:MFC 似乎有更多的支持这种事情(只要大部分的自定义控件,我可以find下载是为MFC)。 我的项目实际上并不需要非MFC,现在就是这样。 我在转换它有多less工作?

关于静态库和DLL

根据我的理解,DLL在运行时dynamic加载,而静态库(.lib文件)在链接期间加载。 我也明白有两种types的.lib文件。 一个是静态.lib文件,这意味着在链接这些文件时,将链接到我写的代码。 另一种types的.lib文件只是简单的导入文件,它只是告诉链接器可能在system32或sysWoW64文件夹中的.dll文件的path。 我的理解是正确的吗? 现在我对这个.lib和.dll文件的整个系统如何工作有一些疑问。 我有编译freeglut库,并在lib文件夹我有3个重要的文件。 freeglut.lib,freeglut-static.lib和freeglut.dll。 我假设freeglut.lib是一个导入库,因为它只有36KB的大小。 我也假设freeglut-static.lib是一个大小约为2MB的静态库。 我可以通过将freeglut.lib放在C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Lib和freeglut.dll中的sysWoW64文件夹中来使我的代码工作。 这对我有用,我明白这是最有效的方法。 当我尝试使用freeglut-static.lib它不会编译。 我把freeglut-static.lib放在C:\ Program Files文件(x86)\ Microsoft SDK \ Windows \ v7.0A \ Lib(我从这里删除了freeglut.lib),并在项目属性>链接器>input中添加了freeglut-static.lib >额外的依赖关系。 不过视觉工作室不断地说 'LINK : fatal error LNK1104: cannot open file 'freeglut.lib' 为什么这样呢? 这只是一个试图了解图书馆的尝试,我可以继续使用第一种方法。可以有人对此有所洞察? 我错过了什么吗?

CMake发布步骤:根据visual studioconfiguration复制多个文件

我正在尝试编写一个CMakeLists.txt ,将其作为后期构build事件复制,需要从外部库到构build后可执行文件所在的文件夹。 我正在使用的操作系统是Win7和VS2010。 有相当多的外部库,所以我不想在CMakeLists.txt单独列出它们。 我目前的解决scheme是使用文件通配,并为每个库创build一个后期构build事件: FILE(GLOB files "${LIBRARY_DIR}/lib/$(ConfigurationName)/*dll") MESSAGE("FILE LIST IS: ${files}") FOREACH(file ${files}) ADD_CUSTOM_COMMAND( TARGET mylib POST_BUILD COMMENT "Copying dll ${file}…" COMMAND ${CMAKE_COMMAND} -E copy ${file} "${CMAKE_BINARY_DIR}/$(ConfigurationName)/" ) ENDFOREACH() 基本上,如果我用Release或Debugreplace$(ConfigurationName) ,上面的代码会被剪切掉。 不过,我想从Release或Debug构build模式的对应目录中取得这些库。 在上面的代码中, $(ConfigurationName)不会被Visual Studio构build模式替代。 我想这是由于这是一个VS2010variables,它不知道cmake生成时间)。 有人有一个聪明的想法如何解决这个问题?