半年前开发了一个添加水印的com组件,前几天客户那里报错,
状况:在xp、网络上下载的别人OEM的2003 虚拟机上没 有问题,但是在2003sp2裸机上(打过VC9sp1补丁)报错
代码(VC9):if (m_hDll == NULL)
m_hDll = ::LoadLibraryW(RelToAbsWithPlugin(L"PDFToolCol.dll").c_str());
PdfToolAction_Proc pAction = (PdfToolAction_Proc)GetProcAddress(m_hDll, "PdfToolAction");
ASSERT(pAction != NULL);
错误:ASSERT弹出错误,loadLibrary没有报错。
后来安装了个2008调试,发现没错,这才把目标缩小到了VS2008上,经过一番周折,最后发现是没有安装.net framework。到网上查了一下,才了解其中缘由。
(转自冷秋魂的专栏)
以前在使用VC开发出的程序,在一个没有开发环境的机器上必须安装.Net Framework才能运行。一直没有在意,知道同事提起这个问题。
MFC和.Net Framework是两个不同的框架,为什么有这个依赖呢?
答案是: MFC和.Net Framework确实是不同的框架。MFC是微软基本类库,.NET Framework包括CLR和FCL两大部分。在开发的时候,它们之间没有关系。但是为什么会出现上面的问题呢?其实MFC写出来的程序是可以不用安 装.Net的。安装.Net,其实就是安装一些运行时需要加载的Dll。如果我们程序中设定“在静态库中使用MFC”,这样就不需要安装.Net,我看了 以前的程序,都是设定的“在共享的DLL中使用MFC”,这样就需要在运行