小编Pie*_*aud的帖子

如何构建C++应用程序,它运行在普通的旧版XP SP2上,使用Visual Studio 2008并没有并排的DLL?

我想只用一次调用编译一个C++项目,WinExec以便用一些命令行参数启动另一个可执行文件.我不知道,指定在我的项目,以获得产生,无需微软并排侧的DLL,我不希望有安装我的目标系统上工作的可执行什么设置.任何提示?

症状是一个无法启动的应用程序,以下事件被写入应用程序日志(从法语自由翻译):

Error, SideBySide, event #33
Microsoft.VC90.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" cannot be found. 
Run Code Online (Sandbox Code Playgroud)

更新:我知道使用WinExec是不好的做法,但它就像一个魅力,微软不可能在任何未来的API版本中删除它,不是吗?

c++ crt side-by-side visual-studio-2008

1
推荐指数
2
解决办法
677
查看次数

WebClient.DownloadFile在发送第一个请求之前耗时太长

我编写了一个非常简单的控制台应用程序,它只是使用以下代码下载文件:

System.Net.WebClient web = new System.Net.WebClient ();
web.DownloadFile ("http://www.google.com", "file.txt");
Run Code Online (Sandbox Code Playgroud)

在我以前的开发机器上,这非常快.一旦我执行了该DownloadFile方法,请求就越过了线路,响应很快就会响起.我使用ProcMon工具检查了这种行为.

然而,在切换到另一台机器之后,我发现它比我的初始开发盒要强大得多,我注意到在调用时大约5-8秒不会发生任何事情DownloadFile.使用浏览器访问相同的URL会显示几乎立即的结果.

在花了几个小时研究这个,进入.NET源代码之后,我终于放弃了System.Net.ServicePointManager.FindServicePoint踩到某种程度上不再对我有意义的地方,以及一些代理解析似乎有原因的地方.

我终于关闭了Internet Explorer 8(我运行的是Windows 7 x64)中的" Internet选项"对话框的" 局域网设置"对话框中的" 自动检测设置",而对话框中没有设置复选框.这神奇地使一切都做得非常非常快.没有更多的延迟.

好吧,我找到了一种方法来规避我观察到的问题,但如果有人可以就我的代码可能出错的地方分享一些想法,我会很高兴.我可以通过某种方式配置WebClient实例以某种方式实现相同的效果吗?

.net proxy webclient downloadfile

1
推荐指数
1
解决办法
1956
查看次数

COMCTL32.DLL加载两次时的GetModuleHandle和GetProcAddress

我在一个COMCTL32.DLL加载两次的进程内运行,一次使用版本5.82.7601.17514,一次使用版本6.10.7601.17514.旧版本由程序链接的一些遗留DLL加载,另一个版本由较新的DLL加载.

如果我使用GetModuleHandle (L"COMCTL32.DLL")我无法控制解决的DLL.

GetProcAddress例如,当我调用到达时,TaskDialogIndirect我得到一个空指针,这当然是因为我找回了遗留DLL的句柄.

那么,是否有一些方法可以获取地址,比如TaskDialogIndirect何时加载两个DLL.

如果没有,我可以以某种方式确保该进程加载6.10版本而不是5.82,希望我们的旧版DLL能够在较新版本的情况下正常运行COMCTL32吗?

dll winapi comctl32 loadlibrary

1
推荐指数
1
解决办法
1527
查看次数

无法从C#.NET加载Win32本机DLL文件

我有一个C#winapp.我从C#应用程序调用一个原生.dll文件(由我自己创建),它工作正常.

但是当我将我的应用程序(.exe和.dll文件)复制到另一台机器时,我收到一条错误消息:

无法加载DLL"c:\ dllname.dll":找不到指定的模块.(来自HRESULT的异常:0x8007007E)

这是C#代码:

class IsoMessageHelper
{
    public const string ISO8583_DLL = "c:\\Hc8583.dll";
    [DllImport(ISO8583_DLL, CallingConvention = CallingConvention.Cdecl)]
    public static extern bool InitializationRq(...)
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

c# dll winapi

0
推荐指数
1
解决办法
2686
查看次数