Tag: visual studio 2012

使用stdprn时的C编译错误

我的操作系统是:Windows 8 IDE:VS 2012 这是我的C程序。 (来自书) /* print_it.c—This program prints a listing with line numbers! */ #include #include void do_heading(char *filename); int line = 0, page = 0; int main( int argv, char *argc[] ) { char buffer[256]; FILE *fp; if( argv 1) fprintf( stdprn, “\f” ); fprintf( stdprn, “Page: %d, %s\n\n”, page, filename ); […]

为什么我可以在gcc上声明一个预定大小的数组,但不能在visual studio c ++上声明?

我想知道为什么我可以在linux中执行此代码而不是在visual studio上执行此代码? (文件 – > main.c) int size; printf(“Size:”); scanf(“%d”,&size); int vec[size]; 它与c89或c99标准有什么关系吗? 因为我试图改变gcc上的标志,但仍然有效。

错误C2011:’timezone’:’struct’类型重定义(postgres)

我正在努力建立一个。 dll文件用C函数扩展postgres服务器。 我正在使用visual studio 2012构建dll和PostgreSQL 9.2。 我导入所有目录postgres“\ include \ server *”但我有错误: 错误C2011:’timezone’:’struct’类型重新定义 错误C2011:’itimerval’:’struct’类型重新定义 在第205和214行的文件* pg_confi_os.h *中 我试过这个解决方案但没有成功。 如何解决这个问题呢?

使用结构不同的代码与c程序联系经理

现在我遇到了另一个问题,在我改变了如下所示的编码之后,它仍然显示出错误。 在编码内部,没有任何红色下划线,因此我无法找出错误的位置。 那么这个编码有什么错误吗? struct contact { char name[20],email[20]; int hpnum; }add; int option; FILE *f; void addcontact(struct contact list[100]); void read(struct contact list[100]); int main (void) { struct contact list[100]; system(“cls”); printf(“==========Welcome to Jeffery’s Contact System Management==========\n”); printf(“\t\t\tContact System Main Menu\n”); printf(“[1] Create a New Contact\n”); printf(“[2] Modified Existing Contact\n”); printf(“[3] Delete Existing Contact\n”); printf(“[4] […]

使用结构与c程序联系经理

struct contact { char name[20],email[20]; int hpnum; }add; int option; int main (void) { system(“cls”); printf(“==========Welcome to Jeffery’s Contact System Management==========\n”); printf(“\t\t\tContact System Main Menu\n”); printf(“[1] Create a New Contact\n”); printf(“[2] Modified Existing Contact\n”); printf(“[3] Delete Existing Contact\n”); printf(“[4] Search Existing Contact\n”); printf(“[5] Exit\n”); printf(“Please enter one of your option.\n”); scanf(“%d”,option); switch(option) { //add new […]

在Visual Studio中制作适合由Mozilla中的js-ctypes使用的C DLL

正如主题所说,我正在尝试做的与使用Visual Studio 2012相似。 我可以构建和生成DLL,我可以在javascript中加载该DLL,但我无法访问该DLL中的函数。 查看DllExp中的DLL显示没有函数,表明DLL有问题。 DLL是使用“Empty Project”模板创建的新C ++项目。 显着的设置是; 常规 – >配置类型设置为DLL 没有优化。 没有预编译的头文件。 编译为C代码 调用约定__cdecl 用于编译和链接的命令行,如果有一个我认为不重要的设置,则是 /GS /TC /analyze- /W3 /Zc:wchar_t /ZI /Gm /Od /sdl /Fd”Debug\vc110.pdb” /fp:precise /D “_WINDLL” /D “_MBCS” /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa”Debug\” /EHsc /nologo /Fo”Debug\” /Fp”Debug\StreamInterop.pch” 对于链接器 /OUT:”C:\Work\VehicleTracker-DotNet\StreamInterop\Debug\StreamInterop.dll” /MANIFEST /NXCOMPAT /PDB:”C:\Work\VehicleTracker-DotNet\StreamInterop\Debug\StreamInterop.pdb” /DYNAMICBASE “kernel32.lib” “user32.lib” “gdi32.lib” “winspool.lib” “comdlg32.lib” […]

在visual studio 2012中引用另一个项目中的DLL

我是Visual Studio的新手,我试图在同一个解决方案中引用另一个项目的dll。 我添加了引用,指定项目依赖项并设法引用代码中的头文件,但是当我构建解决方案时,我得到类似于以下内容的错误: unresolved external symbol “int __cdecl increment(int)”

vs2012:SQLite:访问冲突读取位置0x0000000C

我正在使用C在vs2012中实现SQLite Prepare-Statement。 我使用此链接作为教程来捕获每次运行代码时在我的机器上运行的进程。 一切都运行正常,除了prepare-statement不允许我把它放在do-while循环之外。 如果我把它放在do-while循环中,那么我实际上什么都不做,因为每次db-insertion都会再次执行prepare-statement,这是不切实际的。 但是,当我将prepare-statement放在do-while循环中并运行代码时,它工作正常(但它运行尽可能多的插入我必须插入)。 当我把do-while循环放在外面时,它会给我一个内存警告和中断。 这是我如何实现SQLite: BOOL GetProcessList(sqlite3 *db) { HANDLE hProcessSnap; HANDLE hProcess; PROCESSENTRY32 pe32; DWORD dwPriorityClass; sqlite3_stmt* stmt; char *errorMessage; char query[80] = “INSERT INTO Process_list VALUES (?1, ?2, ?3, ?4, ?5);”; // Take a snapshot of all processes in the system. hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); if( hProcessSnap == […]

使用Visual Studio构建R包(C API)

我正在尝试使用Visual Studio构建一个简单的R包,这是我的代码: #include #include SEXP add(SEXP a, SEXP b) { SEXP result = PROTECT(allocVector(REALSXP, 1)); REAL(result)[0] = asReal(a) + asReal(b); UNPROTECT(1); return result; } 我安装了R运行时和RTools。 当我尝试编译它时,我收到以下链接错误: error LNK2019: unresolved external symbol REAL referenced in function “struct SEXPREC * __cdecl add(struct SEXPREC *,struct SEXPREC *)” (?add@@YAPEAUSEXPREC@@PEAU1@0@Z) error LNK2019: unresolved external symbol Rf_asReal referenced in function “struct […]

为什么内存对齐会在结构中发生变化?

在前一个问题中 ,我了解到当具有8字节对齐的结构嵌入到具有4字节对齐的另一个结构中时,在8字节对齐结构之前需要填充。 了解。 至少我以为我明白了。 VS 2012文档说: 对于结构,联合和数组,对齐要求是其成员的最大对齐要求。 所以,如果我有这样的结构: typedef struct s_inner { unsigned long ul1; double dbl1; fourth_struct s4; unsigned long ul2; int i1; } t_inner; 我希望这个结构的所有成员都是8字节对齐的,因为double是8字节对齐的。 但我的记忆转储告诉我这个: t_inner从地址1B8开始: 1B8 : unsigned long 1B8被填充,因为结构是8字节对齐的 1C0 : double 1C0消耗8个字节 1C8 : fourth_struct如下, 它具有4字节对齐 到目前为止,一切都如预期。 但是现在t_inner内部的对齐开关 :在地址1E8 ,我希望在这里只找到unsigned long int ,填充4个字节,以便后面的int也在8个字节上对齐。 但似乎对齐现在已经改变,因为unsigned long整数不携带填充字节。 相反,以下int以4字节对齐方式放置。 为什么对齐开关在t_inner ? 这里适用哪条规则?