我喜欢使用Win32,即使在.Net,MFC和touch时代.我的同事告诉我,在未来的Windows版本(Windows 9之后)中可能无法使用Win32 API,因为Microsoft可能会弃用它.
但是,这对我来说似乎是不可能的,因为Windows本身使用了这么多的API.如果他们摆脱了低级别的Win32 C库,操作系统本身就会停止工作,他们将不得不重新编写操作系统的大部分(更不用说所有可能被破坏的代码).
无论如何,我对这些东西知之甚少,是否有人对这是否不可能有任何技术上的了解?
另外,请注意我不会问Windows 将来是否会弃用低级API,我知道这是推测性的.我的具体问题是,假设他们愿意,微软可以做到这一点是多么可行.
环境是Windows,MS Visual Studio 2012.如何在C(而不是C++)应用程序中使用我用C++编写的DLL库?在我的DLL中,我使用了名称空间,类等.例如,我写了两个简单的项目:
两者都是用C++编写的.任何人都可以向我展示一个用C编写的类似应用程序,它使用C++库吗?
谢谢.
好吧,所以我有一个情况,我调用LoadLibrary我写的DLL.对LoadLibrary的此调用将返回错误#998或ERROR_NOACCESS"对内存位置的无效访问".
有问题的DLL在一种配置中使用MFC,而在另一种配置中不使用; 只有MFC配置有这个问题.它曾经工作,但我不知道我改变了什么:我实际上转向了非MFC版本,并且一直在修补它,我不知道我能做些什么影响了MFC版本.
我不太了解DLL.原来的加载代码实际上是给我的,我没有改变它.以下是该代码:
// submodule loading
#ifndef MFC
// Project uses standard windows libraries, define an entry point for the DLL to handle loading/unloading
BOOL WINAPI DllMain(HANDLE hDllHandle, DWORD dwReason, LPVOID lpreserved)
{
_MESSAGE("DllMain called.");
switch(dwReason)
{
case DLL_PROCESS_ATTACH: // dll loaded
hModule = (HMODULE)hDllHandle; // store module handle
_MESSAGE("Attaching Submodule ...");
break;
case DLL_PROCESS_DETACH: // dll unloaded
_MESSAGE("Detaching Submodule ...");
break;
}
return true;
}
#else
// Project uses MFC, we define …Run Code Online (Sandbox Code Playgroud) FluentValidation 库相对于 .NET System.ComponentModel.DataAnnotations 有什么优势?
它是否提供更灵活的验证,因为它没有在属性上进行注释(静态字段验证),例如根据另一个属性值验证属性?
如何用SAS中的零替换所有缺失值?我有一个文本文件,我转储到SAS处理一些地理数据,但每当它有一个缺失的值,它会打破操作.有没有办法在不指定每个字段的情况下改变它?我有200多个.
我这样做的方式是:
data geo_cali_north;
set geo_cali_north;
if polar_data eq . then 0;
if lat_xvar eq . then 0;
run;
Run Code Online (Sandbox Code Playgroud)
我怎样才能避免为每个领域做到这一点?
如何根据打印的作业ID获取进行打印的用户的域名?
我可以从例如通过GetJob检索的JOB_INFO_2获取用户名,但JOB_INFO_#结构中没有一个包含用户的域名.
我可以使用打印服务器的域名IPGlobalProperties.GetIPGlobalProperties().DomainName,但这可能与用户的域名不同,因此它不是一个可靠的解决方案.
我对python缺乏经验,所以我发现自己不知道如何处理这个bug.我继承了一个python应用程序,主要只是将文件和文件夹从一个地方复制到另一个地方.所有文件和文件夹都在本地计算机上,并且用户具有完全管理权限,因此此处没有网络或安全问题.
我发现很多文件无法从一个目录复制到另一个目录,除非我以某种方式减慢代码速度.如果我只是运行该程序它失败了,但是如果我单步执行调试器或print向复制循环添加语句,它就会成功.差异似乎是循环的时间或在内存中移动的东西.
我以前在编译语言中看到过这种错误,它通常表示竞争条件或内存损坏.但是,只有一个线程并且没有与其他进程的交互,因此竞争条件似乎是不可能的.内存损坏仍然存在,但我不确定如何用python调查这种可能性.
这是有问题的循环.如您所见,它相当简单:
def concat_dirs(dir, subdir):
return dir + "/" + subdir
for name in fullnames:
install_name = concat_dirs(install_path, name)
dirname = os.path.dirname(install_name)
if not os.path.exists(dirname):
os.makedirs(dirname)
shutil.copyfile(concat_dirs(java_path, name), install_name)
Run Code Online (Sandbox Code Playgroud)
该循环通常无法复制文件,除非我使用调试器单步执行或shutil.copyfile在行后添加此语句.
print "copied ", concat_dirs(java_path, name), " to ", install_name
Run Code Online (Sandbox Code Playgroud)
如果我在调试中添加该语句或逐步执行,则循环可以完美且一致地工作.我很想对声明说"足够好",print但我知道这只是掩盖了一个潜在的问题.
我不是要你调试我的代码,因为我知道你不能; 我要求调试策略.我该如何找到这个bug?
我目前正在开发用于数据记录的嵌入式Linux设备.Linux设备插入CANbus并将流量写入SD卡.
SD卡有时会损坏并以只读方式安装.需要避免这种行为.
文件系统是FAT(SD卡应该可以被Windows系统读取).
嵌入式设备可以随时断电,因此我需要一种安全的方法从我的C程序写入SD卡.
由于我不是真的进入C,我依赖一个名为"candump"的程序,它基本上以这种格式将canmessages打印到stdout:
<0x006> [8] 77 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)
我的C程序基本上打开了candump程序,从stdout读取,添加时间戳并删除不必要的字符:
1345836055.520 6 7700000000000000
while(running)
{
if (filename != NULL)
{
fp_log = fopen(filename, "a");
if (!fp_log)
{
perror("fopen");
exit (EXIT_FAILURE);
}
}
fgets(line, sizeof(line)-1, fp);
/* reset the row_values so they are always correctly initialized */
row_identifier = 0;
if (strchr(line,'<') != NULL)
{
/* creating a buffer char to store values for casting char to int*/
buffer_ident[0] = line[4];
buffer_ident[1] = line[5];
/* …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Microsoft Enterprise Library Data Access 5.0来执行存储过程.
Database myDatabase = DatabaseFactory.CreateDatabase();
using (DbCommand command = myDatabase.GetStoredProcCommand("myStoredProc"))
{
//Add parameters here
using (IDataReader dataReader = myDatabase.ExecuteReader(command))
{
while (dataReader.Read())
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常但运行需要很长时间.当我打开SQL事件探查器时,我可以看到存储过程大约需要50秒才能运行.但是,如果我从Profiler中获取相同的脚本并在SQL Management Studio中运行它,则返回所有行只需要大约480毫秒.
有没有人遇到过这个问题?为什么会有很大的不同?
我创建了ac#库文件,它将转到本地路径,例如(c:\ test.txt)找到文件并上传到ftp服务器.
为了测试我只是从控制台应用程序调用dll,但我如何作为Windows服务运行,这将持续运行?
我想运行这个dll作为服务来监视c:\文件夹,如果任何文件像"test.txt"那样上传.
提前致谢