Tag: msvcrt

在Windows中的套接字上使用fprintf

我正在尝试在Windows上的套接字上使用fprintf。 许多在线示例都是UNIX示例 。 Windows的等效代码就是我在这里要问的。 最后,我想这样做: fprintf(file_handle_to_socket, “hello world\r\n”); 我不想使用WriteFile,snprintf或其他任何东西。 只是fprintf()。 或多或少显示步骤的伪代码将是有帮助的。 这是我到目前为止: unsigned short port = enter_port; int result = 0; WSADATA wsaData; result = WSAStartup(MAKEWORD(2, 2), &wsaData); struct sockaddr_in local; memset(&local, 0, sizeof(struct sockaddr_in)); local.sin_port = htons(port); local.sin_family = AF_INET; local.sin_addr.s_addr = htonl(INADDR_ANY); int sock = socket(AF_INET, SOCK_STREAM, 0); if(sock == INVALID_SOCKET) { fprintf(stdout,”invalid […]

C运行时静态与动态链接中的内存分配

我的程序架构涉及插件(dll)和exe(显然)。 我们是唯一的插件提供商。 有人告诉我,如果我们静态链接c运行时,在插件中分配内存然后在exe代码中释放它是一个潜在的问题。 但是,如果我们动态链接它,那么只有一个堆,并且c运行时可以访问所有这些堆。 我们根据这个建议切换到动态链接,但是我们从交换机看到的所有内容都是令人头疼的问题,以及与新运行时的分发和安装相关的麻烦。 (不知道我们在内存分配问题上避免了什么。) 内存分配的含义是什么? 假设一个插件分配内存,exe释放它。 静态与动态链接的c运行时之间是否存在不同的行为? 如果我们使用插件,我们是否会在静态链接c运行时时遇到问题? 如果我们切换回静态链接,那会破坏内存泄漏检测和崩溃转储报告吗? 与我选择哪个VC ++运行时版本的注释提出的一些问题一致- 静态还是动态? 具体来说,我选择哪个VC ++运行时版本 – 静态还是动态? 在http://msdn.microsoft.com/en-us/library/abx4dbyh(v=VS.100).aspx上也有一些讨论。

如何在VC中输入main()例程之前执行一些代码?

我正在阅读Microsoft的CRT源代码,我可以提出以下代码,其中函数__initstdio1将在main()例程之前执行。 问题是,如何在VC(而不是VC ++代码)中输入main()例程之前执行一些代码? #include #pragma section(“.CRT$XIC”,long,read) int __cdecl __initstdio1(void); #define _CRTALLOC(x) __declspec(allocate(x)) _CRTALLOC(“.CRT$XIC”) static pinit = __initstdio1; int z = 1; int __cdecl __initstdio1(void) { z = 10; return 0; } int main(void) { printf(“Some code before main!\n”); printf(“z = %d\n”, z); printf(“End!\n”); return 0; } 输出将是: Some code before main! z = 10 End! […]

如何从fopen FILE结构中获取文件HANDLE?

fopen函数返回一个指向FILE结构的指针,该结构应被视为不透明值,而不处理其内容或含义。 在Windows上,C运行时是Windows API的包装, fopen函数依赖于CreateFile函数。 CreateFile函数返回一个HANDLE ,由其他Windows API使用。 现在,我需要在使用fopen和FILE*的库内部使用Windows API。 那么:有没有办法从FILE结构中获取HANDLE ? 由于这是特定于编译器的,我的意思是在MSVC运行时库上。 我知道这将是一个丑陋的,不可移植的黑客,如果微软改变FILE的内部格式,可能会破坏…但我正在开发一个封闭的系统(即在Windows CE嵌入式系统上)并重构图书馆既困难又耗时。