msdn里 说 dllexport函数可以在dll里,也可以在exe文件里
但是我为什么不用调用 exe文件里dllexport函数?//in project1.exe
extern "C" __declspec(dllexport)
void _stdcall fun()
{
MessageBox(NULL,"Hello","ddHello",0);
}//另一个调用project1.exe的dllexport程序
void _stdcall (*dll_fun)();
HINSTANCE h=LoadLibrary("Project1.exe");
if(h)
{
(FARPROC)dll_fun=GetProcAddress(h,"fun");
if(dll_fun)
dll_fun() ; //非法错误。
}
但是我为什么不用调用 exe文件里dllexport函数?//in project1.exe
extern "C" __declspec(dllexport)
void _stdcall fun()
{
MessageBox(NULL,"Hello","ddHello",0);
}//另一个调用project1.exe的dllexport程序
void _stdcall (*dll_fun)();
HINSTANCE h=LoadLibrary("Project1.exe");
if(h)
{
(FARPROC)dll_fun=GetProcAddress(h,"fun");
if(dll_fun)
dll_fun() ; //非法错误。
}
解决方案 »
- 怎么去除Win7窗口bitblt截图时的黑块
- 怎样在Menu上添加一个TextBox?(VC6)
- 如何实现类似O&O defrag等磁盘碎片整理软件的界面?
- 为什么: error LNK2001: unresolved external symbol _WinMain@16
- 如何让程序在非法操作时进行转储?类似IE出错时一样?
- 100分求《Visual C++ .NET技术内幕(第6版潘爱民译)》随书光盘源码及英文版电子书
- 开了18个线程,每个线程内都有死循环,程序运行明显变慢?
- ODBC连接数据库,出现“检索数据库错误”是什么原因?
- 急需一个需要循环的批处理程序?(150分赠送!)
- 关于richedit选择文字问题。
- 谁遇到这样的问题:类CImageList...,详细情况请进来看看!
- 关于对话框内作图时的更新问题
改一下://另一个调用project1.exe的dllexport程序
typedef void _stdcall (*dll_fun)();
dll_fun pfun;
HINSTANCE h = LoadLibrary("Project1.exe");
if(h)
{
pfun = (dll_fun)GetProcAddress(h,"fun");
if(pfun)
(*pfun)() ;
}
就可以调用了(静态连接)
HINSTANCE hInst=LoadLibrary("win32.exe");
DLL_FUNC f=(DLL_FUNC)GetProcAddress(hInst,"_fun@0");
f() ;
我project1.exe是用bcb做的。
测试程序用bcb,vc ,lcc都没有成功。
不知道为什么
这个是因为loadlibrary在load exe时并不会初始化其imports tables,所以调用外部api就会非法操作。你把exe地输出函数改为一个简单地计算或者只是返回某个值就可以了.
记住不要调用其他dll里面地函数,如果要用crt lib地话,静态连接进去
bo2k源码里面有那个函数可以用,需要改一些的