2013-02-28 80 views
1

我一直在谷歌搜索整个早上,所有我找不到我在找什么。我在Visual Studio中为MFC修改了常规DLL。也就是说,在项目向导,我选我在哪里实现我的MFC DLL函数?

Win32 Project -> DLL -> MFC 

我做只要点击向导中的主力名单,这是所有的在线教程描述了MFC DLL。

我的问题很简单。在.cpp文件中,我只需要知道我是否应该实现我的方法(在.h文件中声明)内部的外部的_tmain函数。 里面有一个评论,说

//TODO: code your applications behavior here 

,但我不知道这是我的地方去实现。

仅供参考,这里是.cpp文件:

​​
+0

DLLs不包含主要函数...如果MFC不同,会很好奇。 – 2013-02-28 14:46:14

+0

我在想,这里的_tmain函数只是为了与MFC兼容,这意味着要在外部实现我的方法。但他们并没有说实施它们的地方,所以我不太确定... – xcdemon05 2013-02-28 14:47:39

+0

检查[this](http://www.codeproject.com/Articles/2516/Creating-and-consuming-MFC- DLLs-for-Beginners)文章了。 – 2013-02-28 14:49:06

回答

1

既然你无法实现的功能/其它功能的方法里面执行方法需要在_tmain功能外去。

您引用的注释块可以替换为提供库的初始化实现。

所以,如果你声明像SayHello的功能,这可能看起来像这样:

testmfcdllblah.h

// Declaration 
void SayHello(void); 

testmfcdllblah.cpp

void _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 
{ 
    // .. all the other stuff .. 

    // TODO: code your application's behavior here. 
    SayHello(); 

    // .. the rest of the other stuff .. 
} 

void SayHello() 
{ 
    AfxMessageBox("Hello!"); 
} 
1

在C++中,不能定义局部功能。你永远不会在_tmain中实现任何函数。

当您使用向导来创建DLL时,您应该添加一个头文件来定义您的DLL接口。你应该在你实现函数的地方添加一个.CPP源文件。

您可以呼叫在那个地方功能,你找到

// TODO: change error code to suit your needs 

BTW:我不知道为什么一个动态链接库,向导将创建一个主要功能。

+2

因为DLL也可以定义入口点;)当它们被加载到进程中时,这可以用来初始化它们。据我记得MFC使用它来初始化COM(和其他几个资源)... – Carsten 2013-02-28 14:58:31

相关问题