VS2005中通过MFC生成的DLL文件,怎样在另外一个C++的Main函数中调用?

如题,一般默认是生成exe文件,直接执行就行了,现在我设置为生成DLL文件,请问如何在另外的Main函数中执行这个DLL文件。
谢谢1楼的朋友,另外还有个问题,MFC的入口函数是tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
__in LPTSTR lpCmdLine, int nCmdShow),怎样调用这个函数呢

调用DLL有两种方法:静态调用和动态调用.
(一).静态调用其步骤如下:
1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;
2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;
3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目录下;
4.打开你的目标工程选中工程,选择Visual C++的Project主菜单的Settings菜单;
5.执行第4步后,VC将会弹出一个对话框,在对话框的多页显示控件中选择Link页。然后在Object/library modules输入框中输入:youApp.lib
6.选择你的目标工程Head Files加入:youApp.h文件;
7.最后在你目标工程(*.cpp,需要调用DLL中的函数)中包含你的:#include "youApp.h"
注:youApp是你DLL的工程名。

(二).动态调用其程序如下:
动态调用时只需做静态调用步骤1.

01 {
02 HINSTANCE hDllInst = LoadLibrary("youApp.DLL");
03 if(hDllInst)
04 {
05 typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);
06 MYFUNC youFuntionNameAlias = NULL;
07 // youFuntionNameAlias 函数别名
08 youFuntionNameAlias = (MYFUNC)GetProcAddress(hDllInst,"youFuntionName");
09 // youFuntionName 在DLL中声明的函数名
10 if(youFuntionNameAlias)
11 {
12 youFuntionNameAlias(param1,param2);
13 }
14 FreeLibrary(hDllInst);
15 }
16 }

显式(静态)调用:
LIB + DLL + .H,注意.H中dllexport改为dllimport
隐式(动态)调用:
DLL + 函数原型声明,先LoadLibrary,再GetProcAddress(即找到DLL中函数的地址),不用后FreeLibrary
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-27
另外一个C++的Main函数中调用

前提是你用MFC生成的DLL是标准DLL,不能是MFC扩展DLL,其它参考别人
第2个回答  2010-09-27
加载进去。调用里面的导出函数。去百度下动态链接库的使用。

VS2005中通过MFC生成的DLL文件,怎样在另外一个C++的Main函数中调用?
1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目录下;4.打开你的目标工程选中工程,选择Visual C++的Project主菜单的...

...MFC建立的DLL,我想在VB中引用后使用里面的类函数,但是啥都看不到...
跨语言的DLL调用,必须符合约定规范,在windows平台下,有两个规范,一个是windows API DLL规范,一个是COM\/COM+规范(ActiveX是这个)。MFC_DLL使用了c++类,不符合上述两种规范,因此不能跨平台跨语言调用。

怎样在MFC中调用C#编写的DLL
一、使用 \/clr 编译 MFC 可执行文件或规则 DLL 1、打开项目属性对话框,方法是右键单击解决方案资源管理器中的项目并选择属性。2、展开配置属性旁边的节点并选择常规。在右侧窗格中的项目默认值下,将公共语言运行库支持设置为公共语言运行库支持 (\/clr)。3、在相同的窗格中,确保将MFC 的使用设置为在...

如何在C++中打开建好的MFC文件?
1、在打开的ie浏览器窗口右上方点击齿轮图标,选择“Internet选项”,如下图所示:2、在打开的Internet选项窗口中,切换到安全栏,在安全选卡中点击“自定义级别”,如下图所示:3、在“安全设置-Internet 区域”界面找到“Java 小程序脚本”、“活动脚本”,并将这两个选项都选择为“禁用”,然后点击...

microsoft visual studio 2005怎么编译C语言
确定后,有个运行向导.点击下一步后,在附加选项中把"空项目"选中.就可以完成了.让后在解决方案中右键"源文件",选择"添加","新建项",在弹出的对话框中选择"代码"类别,在右边的窗口中选择C++文件喽.再在下面输入一个代码文件的名称,添加就可以了.剩下的就是写代码了.写代码后点击"启动调式"或者...

为什么我编译的MFC应用程序在其他电脑上不能运行?
怎么我用c++ builder6.0编的一个小程序在其他电脑上不能运行 在程序编译的时候,你需要把程序用到东西都打包到EXE文件中,如下操作: 在Options 中,把Packages--build with runtime packages前的勾去掉 把linker-- use dynamic rtl前的勾去掉 另外,如果你用了数据库功能,那么,你必须把数据...

VC++.NET2005中的DLL的问题
你建的是Win32的DLL工程,添加MFC支持只是你在内部可以使用MFC类而已,不能导出MFC类对象和指针的,针对你的情况,应该建立MFC的DLL工程,特别是 MFC extension DLL 方式可以导出类和对象指针。

如何在C++中打开一个已经建好的MFC文件
1vc6.0软件 【打开】--【工程】--打开后缀为dsw的文件 2vs系列软件 打开后缀为sln的文件 3如果只有 cpp h文件,则新建一个MFC空工程,打开工程,插入cpp h这些源文件到工程。ok了!

在C++的MFC中如何在用DoModal()调用另外一个窗口后把原来的窗口...
再调主窗口对象的ShowWindow(SW_HIDE)。如果需要在第二个窗口中单击退出程序时,直接调主窗口的OnClose(),由于OnClose()函数是主窗口的Protected函数,你可以在主窗口中定义一个Pubilc的Close函数,执行OnClose(),然后调主窗口的Close(),或者直接exit(0),不过这样有时候会出问题。

非MFC程序如何调用MFC扩展DLL之最简单方法
如果你是导出的是普通的C++类,那么调用者不一定要是MFC程序啊,普通的程序也可以,反正是用VC++写的都行,因为你导出的时候它会生成一个lib,里面保存了函数名各种信息,VC++都能识别的,跟MFC没关系 所以说,网上的一些说法有点片面,MFC扩展DLL,他们都把它认为是这个DLL都只导出MFC的类了,其实...

相似回答