Tag: windows

如何使用Msys2和MinGW在Windows上构建OpenLDAP库?

我正在尝试在Windows上构建OpenLDAP。 我这样做非常困难。 我开始按照这里列出的指示,但很快意识到它已经过时了。 然后我发现了这一点 ,并意识到它也不是很正确。 我终于找到了这个 ,并且经历了这个家伙正在经历的确切错误。 然而,当我尝试他的工作时(在portable.h中评论第1116行)我遇到了更多的问题。 是否有用于构建此库的规范来源? 我正在使用: Windows 7专业版。 Msys2(x86_64 20160205来自这里 ) OpenSSL(版本1.0.1r从这里 ) rxspencer(alpha 3.8.g7 from here ) OpenLDAP(版本2.4.44从这里开始 ) 第0步: 编译rxspencer ./configure make make check make install 步骤1: 使用Visual Studio 2010 x64命令提示符编译OpenSSL perl Configure no-ssl2 VC-WIN64A –prefix=d:\temp\openssl\x64 ./ms/do_win64a.bat nmake -f ms\nt.mak nmake -f ms\ntdll.mak cd out32 ..\ms\test 第2步: 修改路径,以便configure能够看到rxspencer PATH=$PATH:/usr/local/lib […]

Makefile for Windows和Cygwin

我需要在Windows和Cygwin下使用makefile 。 我遇到makefile正确检测OS并设置适当变量的问题。 目标是为以下命令设置变量,然后使用变量调用规则中的命令: 删除文件:在Cygwin中的rm ,在Windows中的del 。 删除目录: rmdir (Cygwin和Windows中的不同参数) 复制文件:Cygwin中的cp ,在Windows中copy 。 测试文件存在:在Cygwin中test ,在Windows中test IF EXIST 。 列出文件的内容:在Cygwin中type cat ,在Windows中输入。 这是我的尝试,它始终使用else子句: OS_KIND = $(OSTYPE) #OSTYPE is an environment variable set by Cygwin. ifeq ($(OS_KIND), cygwin) ENV_OS = Cygwin RM = rm -f RMDIR = rmdir -r CP = cp REN = mv IF_EXIST = […]

阻止版本的execvp(windows)

这个问题与系统的非阻塞版本完全相反() 我想用另一个替换当前进程(不创建另一个进程)。 我想开始(例如) notepad ,但是以阻塞的方式(我不希望得到提示,直到notepad关闭。 在Windows shell中我只是这样做 cmd /c notepad (如果没有以cmd /c为前缀,则notepad自动从提示中分离) 在C中,使用system我就是这么做的 system(“notepad”); 但这是在幕后分手。 我想用notepad 替换当前进程,我希望它是阻塞的。 我试过了: #include #include int main(int argc,char **argv) { char * const args[] = {“cmd”,”/c”,”notepad”,NULL}; execvp(args[0],args); } notepad运行,但控制台立即返回提示。(非阻塞)。 我希望它阻止,我不想使用fork因为它会创建另一个进程:我想替换当前进程。 (我尝试过使用自定义阻塞可执行文件,它也不会阻塞。所以cmd /c notepad示例和其他任何一个一样好) 所以,如果我运行这个可执行文件,我只是从父进程构建: 在notepad进程退出之前,我不希望进程返回到父进程 我希望能够从命令中获得输出( notepad在这种情况下不是一个好例子) 我不想创建额外的进程(这是一个大型多处理应用程序的一部分,我们不能创建2个进程,我们需要为每次运行保留1个进程) 它甚至可能吗?

可执行启动目录的绝对路径

我试图弄清楚如何获取我的程序的开始目录。 我正在使用C并可以访问GLib。 在Linux方面,只要程序启动就很容易g_get_current_directory,并存储该值以供以后使用。 我尝试在Windows上使用相同的方法,但g_get_current_directory返回%APPDATA%解析的内容。 关于如何使用C获取起始目录的任何想法? 谢谢,

如何在Windows-10上的C控制台程序中输入鼠标?

我需要在简单的C控制台程序中与用户的鼠标输入进行交互。 我做了一些研究,并在他们的页面上找到了相关的微软文档 。 首先,我复制了所有的示例代码并将其粘贴到我的编辑器中。 在编译时,它编译得很好,有一个很好的小’.exe’,在运行时,正确地告诉/打印所有’关键事件’和’resize事件’,但没有鼠标事件! 如何在C控制台程序中成功获取鼠标输入? 我的MCVE是Microsoft网站上给出的示例代码 ,因为我逐字使用了该示例代码! 我正在使用Windows 10 Pro(1703),以防万一。 编辑: – 这似乎是一个不是我独有的问题。 另一个StackOverflow用户也在他的Windows-10系统上报告了同样的问题 。 他提供的MCVE也在Windows-7上运行,但不在Windows-10上,就像我在微软网站上引用的MCVE一样,因为示例代码可能适用于较旧的Windows版本,但不适用于Windows-10,其中‘ “控制台默认值”中似乎启用了“ 快速编辑模式 ” 。

如何在MFC中禁用CListCtrl的水平ScrollBar?

我的MFC项目中有一个CListCtrl控件,我不希望随时显示水平ScrollBar。 但垂直的需要正常显示。 我用过VS2010,有什么解决方案吗?

InterlockedIncrement vs InterlockedIncrementAcquire / Release(Redux)

这是这个问题的后续问题 : 我想我不理解Interlocked Acquire / Release API。 我把下面的小程序放在一起。 据我了解,g_val_1,g_val_2和g_val_3应始终以相同的顺序更新,并且最终应该以相同的值结束。 但他们没有(对于多个线程)。 我错过了什么? 谢谢。 #include “windows.h” #include “stdio.h” #define _THREADS_ 100 #define _TICKS_ 1000 int volatile g_threads = 0; DWORD volatile g_val_1 = 0; DWORD volatile g_val_2 = 0; DWORD volatile g_val_3 = 0; BOOL g_running = TRUE; DWORD TestThread(PVOID ignore) { while (g_running) { InterlockedIncrementAcquire(&g_val_1); g_val_2++; […]

我无法阻止用户在ListView中编辑标签

根据msdn, http://msdn.microsoft.com/en-us/library/bb774798%28VS.85%29.aspx ,返回TRUE会阻止用户编辑标签。 所以我写了下面的代码:主要: WinMain(…) { DialogBox(…, DlgProc) } DLGPROC: DlgProc(…) { switch(message) { case WM_NOTIFY: if((NMHDR *)lParam->code == LVN_BEGINLABELEDIT) { return TRUE; return FALSE; … } 仍然可以编辑标签。 我不想取消LVS_EDITLABELS的样式,因为有时候我想允许用户编辑标签。 有谁知道这个问题? 谢谢。

QueryPerformanceCounter()测试Windows Embedded Compact 7

循环遍历QueryPerformanceCounter()并保存值: // Main loop for timer test for ( int i = 0; i < ITERATIONS; i++ ) // ITERATIONS = 1000 { QueryPerformanceCounter(&li); time[i] = double(li.QuadPart) / PCFreq; //1,193,182 per second } //calculate the difference between each call // and save in difference[] for ( int j = 0; j < (ITERATIONS – 1) […]

让系统正常运行

我无法确定系统运行的时间。 我现在太累了,但无所事事。 我使用GetTickCount()来获得毫秒数,但我必须将它们转换为人类可读的格式。 我试过这样的事情,但结果很奇怪。 void GetUpTime(DWORD Tick) //GetTickCount() argument. { wchar_t temp[256] = {0}; ZeroMemory(tmpBuff, sizeof(tmpBuff)); wsprintfW(temp, L”%uh %um %us”, Tick/60, Tick/60*60, Tick/60*60*60); lstrcpyW(Time, tmpBuff); } 正如我猜这里,Tick / 60 =秒,Tick / 60 * 60 =分钟和Tick / 60 * 60 * 60 =小时。 但是我需要这样的事情:1h 5m 36s不是整个对话。 问候。