Tag: visual studio 2010

使用Visual Studio 2010编译C库

我在这里找到了一个由其他人编写的C库,以非常好的方式在Mac上编译它并生成一个ruby包装器。 我在Windows上,我需要为.Net生成一个包装器。 我对C或C ++一无所知。 我创建了一个只%include .h文件的.i文件,并使用Swig生成C#文件和xxx_wrapper.c文件。 我用Visual Studio 2010创建了一个空的C ++项目,并包含了项目的所有.h和.c文件(生成ruby包装器的文件除外) 现在,当我尝试编译时,每次有内联函数时都会出现一些编译错误: file.c(54): error C2054: ‘(‘ expected after ‘inline’ file.c(54): error C2085: ‘swap_img’ : is not in the formal parameters list file.c(54): error C2143: syntax error: missing ‘;’ before ‘{‘ 我在这里读到可能是因为VS尝试将我的c文件编译为c ++。 但是我该怎么做? 我无法改变代码中的任何内容(我不会尝试),所以我只需要“修复”项目。 谢谢 !

在范围的开头声明C89局部变量?

我试图在ANSI C中这样做: include int main() { printf(“%d”, 22); int j = 0; return 0; } 这在Microsoft Visual C ++ 2010(在ANSI C项目中)不起作用。 你收到一个错误: error C2143: syntax error : missing ‘;’ before ‘type’ 这确实有效: include int main() { int j = 0; printf(“%d”, 22); return 0; } 现在我在许多地方读到你必须在变量存在的代码块的开头声明变量。这通常适用于ANSI C89吗? 我找到了许多人们提出这个建议的论坛,但我没有看到它写在任何“官方”来源,如GNU C手册。

如何在Visual Studio中为我的应用程序分配所有可用内存?

我想在我的基于Windows的软件中渲染4百万个三角形,该软件是用Visual Studio C ++ 2010(在发布模式下构建)编写的。 当我渲染390万个三角形时,软件消耗的总RAM内存为400MB。 但是当我尝试渲染4百万个三角形(仅多100K)时,系统会给我一个错误。 For Example: Point *P = new (std::nothrow) Point[nb_triangles]; //==> “(std::nothrow)” is for catching the run time memory allocation error. (Point is X, Y, Z floats) If(P == NULL) message(“System can’t allocate this much memory.”); // System gives me this error. It means the system can’t reserve huge memory […]

OpenCV + VS2010上未处理的exception

我可以成功构建并执行以下代码: IplImage* img = cvLoadImage(“C:\\hello.jpg”); cvNamedWindow(“myfirstwindow”); cvShowImage(“myfirstwindow”, img); 但是在执行下面的代码时我得到了未处理的exception: cv::Mat image= cv::imread(“boldt.jpg”); cv::namedWindow(“Image”); cv::imshow(“Image”,image); 虽然,我可以成功构建代码。 我在Windows 7 x86版本上使用opencv2.2和VS2010 x86版本。 请帮忙 ! 更新:我在winxp上尝试过它,它工作正常……它只适用于发布模式下的win7。

静态链接时,链接器是否包含整个库?

例如,如果我静态链接到freeglut,编译器是否包含freeglut中的所有内容或仅包含我使用的部分? 当然,这意味着链接器(或编译器?)会进行某种依赖性分析,以确定它可以安全排除的内容。 如果是这样,有没有办法查看Visual Studio中包含或排除的内容?

Visual C ++运行时malloc / free会将内存返回给操作系统吗?

问题与Will malloc实现将free-ed内存返回系统有很多相似之处? ,但我对Windows / Microsoft Visual Studio的答案以及有关确切虚拟内存状态的详细信息感兴趣。 Visual C ++ CRT会自由地将内存返回给系统吗? 关于虚拟内存分配的内存的确切状态是什么? 在大内存块上释放后,块中的内存是否会被提交,保留或释放? 如果我在免费后拨打_heapmin怎么办?

Visual Studio 2010中的“错误LNK2019:未解析的外部符号”错误

我正在尝试编译并运行一个使用libsndfile库进行声音文件处理的C代码。 我使用此路径添加了头文件: project’s Properties (in C/C++ -> General -> Additional Include Directories) 此外,我已使用此路径链接库: Project Properties -> Linker -> Input -> Additional Dependencies. 但在调试时,我收到以下错误: 1>sil.obj : warning LNK4075: ignoring ‘/EDITANDCONTINUE’ due to ‘/INCREMENTAL:NO’ specification 1>sil.obj : error LNK2019: unresolved external symbol _sf_write_sync referenced in function _main 1>sil.obj : error LNK2019: unresolved external symbol _sf_write_double referenced in […]

MSVC中的复合文字

在海湾合作委员会,我能够这样做: (CachedPath){ino} inode->data = (struct Data)DATA_INIT; 哪里: struct CachedPath { Ino ino; }; typedef int8_t Depth; struct Data { Offset size; Blkno root; Depth depth; }; #define DATA_INIT {0, -1, 0} MSVC为这些类型的强制转换提供以下错误: error C2143: syntax error : missing ‘;’ before ‘{‘ 我怎样才能在MSVC中这样做? 进一步注意,代码已经从C99转换而来,我为此使用了指定的初始值设定项,然后进行类似的转换。 关于C99与C ++的MSVC / GCC实现之间如何关联这些各种特征的任何清晰都是值得赞赏的。

编译器之间的浮点不匹配(Visual Studio 2010和GCC)

我正在努力解决一个正在出现的跨平台问题,我不确定如何解决这个问题。 这是一个演示程序: #include #include int main() { int xm = 0x3f18492a; float x = *(float*)&xm; x = (sqrt(x) + 1) / 2.0f; printf(“%f %x\n”, x, *(int*)&x); } 在VS2010中编译时,Windows上的输出是: 0.885638 3f62b92a 使用GCC 4.8.1 (ideone.com示例)编译时的输出是: 0.885638 3f62b92b 在需要在多个平台上以相同方式运行的程序过程中,这些小的不匹配最终会成为一个严重的问题。 我并不太关心“准确性”,因为结果相互匹配 。 我尝试将VS中的/fp模式从precise切换到strict ,但这似乎并没有解决它。 我应该考虑采用哪些其他途径来进行此计算,在两个平台上都有相同的结果? 更新 :有趣的是,如果我更改这样的代码,它会跨平台匹配: #include #include int main() { int xm = 0x3f18492a; float x = […]

试图在VS 2010中使用’#include ‘

我正在尝试在C程序中使用stdbool.h库文件。 但是,当我尝试编译时,会出现一条错误消息,指出intellisense无法打开源文件stdbool.h。 任何人都可以建议我如何让视觉工作室认识到这一点? 这个头文件是否有效? 我正在读一本关于学习C编程的书。