我使用svn作为一个与其他几个开发人员合作的项目.Svn适用于源代码控制,但是当我们提交dll时,我们都会遇到冲突.
当我解决冲突(删除我的dll作为差异程序无法处理二进制文件),然后必须重建提交.你是如何解决这样的冲突的?
编辑:
dll位于一个单独的svn文件夹中,因为该项目是游戏模式,非程序员需要访问最新版本.
有没有人知道在windows(非.net)环境中进行远程过程调用的好方法?
我找不到有关如何执行此操作的详细信息,msdn只有.net版本.
.
编辑:
谢谢你到目前为止的答案.我需要它是与同一台计算机上的服务进行通信,该计算机将进度报告发送回"客户端".我在rpc中感兴趣的原因是因为vistas uac以及服务无法与普通应用程序交谈,除非他们使用rpc或管道.看看管道,它们似乎完全基于文本,我的印象是rpc可以传递强类型值.
我也会研究DCOM.
我注意到一些应用程序(如steam)能够像普通用户一样启动/停止服务而不调用uac控件.有谁知道怎么做?
操作系统:Vista/Win 7 Visual Studio 2005 C++
.
编辑:昨晚我正在玩蒸汽服务试图弄清楚它是如何不同的.如果我把我的服务exe放在蒸汽一个它启动它很好用uac(使用sc.exe),但如果我使用蒸汽exe在我的地方它没有工作.在服务器信息的注册表中查看,我发现steam有一个额外的权限部分.这是什么意思,你如何设置它?
.
编辑2:您需要更改服务的用户访问权限:http://msdn.microsoft.com/en-us/library/ms684215(VS.85).aspx
我有一个程序,需要检查文件的大块是否归零或有数据.这个alg运行整个文件的大小达到几个演出并需要一段时间才能运行.有没有更好的方法来检查它是否归零?
平台:Linux和Windows
bool WGTController::isBlockCompleted(wgBlock* block)
{
if (!block)
return false;
uint32 bufSize = (uint32)block->size;
uint64 fileSize = UTIL::FS::UTIL_getFileSize(m_szFile);
if (fileSize < (block->size + block->fileOffset))
return false;
char* buffer = new char[bufSize];
FHANDLE fh=NULL;
try
{
fh = UTIL::FS::UTIL_openFile(m_szFile, UTIL::FS::FILE_READ);
UTIL::FS::UTIL_seekFile(fh, block->fileOffset);
UTIL::FS::UTIL_readFile(fh, buffer, bufSize);
UTIL::FS::UTIL_closeFile(fh);
}
catch (gcException &)
{
SAFE_DELETEA(buffer);
UTIL::FS::UTIL_closeFile(fh);
return false;
}
bool res = false;
for (uint32 x=0; x<bufSize; x++)
{
if (buffer[x] != 0)
{
res = true;
break;
}
}
SAFE_DELETEA(buffer);
return res;
}
Run Code Online (Sandbox Code Playgroud) 为了工作,我需要编写一个tcp守护进程来响应我们的客户端软件,并想知道是否有任何人有关于最佳方式的任何提示.
我应该为每个新连接分叉,因为我会使用线程吗?
我已经重叠IO工作了2年了但是我已经将它用于一个新的应用程序并且它把这个错误告诉了我(当我隐藏主要表单时).
我用谷歌搜索但我不明白错误的含义以及我应该如何处理它?
有任何想法吗?
我在NamedPipes上使用它,并在调用GetOverlappedResult后发生错误
DWORD dwWait = WaitForMultipleObjects(getNumEvents(), m_hEventsArr, FALSE, 500);
//check result. Get correct data
BOOL fSuccess = GetOverlappedResult(data->hPipe, &data->oOverlap, &cbRet, FALSE);
// error happens here
Run Code Online (Sandbox Code Playgroud) 我使用CreateFile api,有时随机失败并出现错误:ERROR_SHARING_VIOLATION.
我用Google搜索了,这个错误几乎没有.奇怪的是下次打开同一个文件很开心.
这是我的代码:
void FileHandle::open(const char* fileName, FILE_MODE mode)
{
if (m_bIsOpen)
close();
HANDLE fh = NULL;
DWORD dwDesiredAccess = GENERIC_READ;
DWORD dwShareMode = FILE_SHARE_READ;
DWORD dwCreationDisposition = OPEN_EXISTING;
switch (mode)
{
case FILE_READ:
break;
case FILE_WRITE:
dwDesiredAccess = GENERIC_WRITE;
dwShareMode = 0;
dwCreationDisposition = CREATE_ALWAYS;
break;
case FILE_APPEND:
dwDesiredAccess = GENERIC_WRITE;
dwShareMode = 0;
dwCreationDisposition = OPEN_ALWAYS;
break;
default:
throw gcException(ERR_INVALID, "The mode was invalid");
break;
}
fh = CreateFile(fileName, dwDesiredAccess, dwShareMode, NULL, dwCreationDisposition, 0, NULL);
if (!fh …Run Code Online (Sandbox Code Playgroud) 我目前在C++类中有一个奇怪的错误.我有一个ActiveX包装类(作为wxWidgets的一部分),我添加了一个新的虚函数.我有另一个继承自ActiveX的类(wxIEHtmlWin)但是ActiveX类总是调用它自己的函数而不是wxIEHtmlWin中的一个函数来覆盖它.
我无法弄清楚为什么会这样.我使函数纯虚拟,现在程序在执行函数调用时崩溃,但编译正常.有没有办法禁用虚拟功能或我在Visual Studio中发现了一个错误?
ActiveX类
protected:
virtual FrameSite* getNewFrameSite()=0;
Run Code Online (Sandbox Code Playgroud)
wxIEHtmlWin类
class wxIEHtmlWin : public wxActiveX
{
protected:
FrameSite* getNewFrameSite();
}
FrameSite* wxIEHtmlWin::getNewFrameSite()
{
return new gcFrameSite(this);
}
Run Code Online (Sandbox Code Playgroud)
编辑:我添加了另一个测试函数(返回一个int)并仍然搞砸了.
链接到相关代码:http://lodle.net/public/iebrowser.rar
编辑:
好的,多亏了下面的答案,我得到了它的工作.我所做的是分两部分创建activex类(如建议)但是在wxIEHtmlWin我在构造函数代码中调用了第二部分.像这样:
wxIEHtmlWin::wxIEHtmlWin(wxWindow * parent, wxWindowID id, const wxPoint& pos,const wxSize& size,long style, const wxString& name) : wxActiveX()
{
wxActiveX::Create(parent, PROGID, id, pos, size, style, name);
SetupBrowser();
}
Run Code Online (Sandbox Code Playgroud)
现在我知道为什么wxWidgets支持两部分构造.
我想从curl的URL中检索前10k字节(在我的例子中使用PHP).有没有办法指定这个?我认为CURLOPT_BUFFERSIZE会这样做,但它似乎只能确定在检索所有内容之前重用的缓冲区的大小.
我有一些代码可以从文件复制到 tcp 套接字(如 ftp 服务器),并且希望能够在需要时中止此副本。
我只是使用 io.CopyN(socket, file, size) 并且看不到发出中止信号的方法。有任何想法吗?