【问题标题】:A simple DLL using VS2010 MFC + a test app使用 VS2010 MFC + 一个测试应用的简单 DLL
【发布时间】:2014-02-15 15:43:18
【问题描述】:

我正在尝试构建一个非常简单的支持 MFC 的 DLL 文件。 我用的是VS2010。

我在网上找到的所有示例都显示了如何导出类函数成员。

但我的客户最终应该是一个C 程序。意思是,它不知道使用类和对象。 我只需要为它导出一些简单的函数。

到目前为止,我所做的是将以下内容放在我的 dll cpp 文件中:

extern "C" __declspec(dllexport) CString SayHello (CString strName){
    return theApp.SayHello(strName);
}

在我写的应用类上:

CString CMyDLLApp::SayHello(CString strName){
    return (CString)"Hello " + strName; 
}

我创建了一个简单的基于对话框的应用程序,假设它可以像这样使用此功能

CString strResult = SayHello(m_edit);

在我将 DLL h 文件包含在文件顶部之后:

#include "..\MyDll\MyDll.h"

但是编译器说:error C3861: 'SayHello': identifier not found

你能指导我怎么做吗?不要让我不要在我的 DLL 上使用 MFC,因为我想使用它的 DB 类。

另外,如何测试呢?我不在乎测试程序本身是否也基于 MFC。

【问题讨论】:

  • 您需要在项目中包含DLL,并为其导入类。 MS有一个教程。只需谷歌“使用 DLL 的 C++”
  • 我希望您的 C 程序 不会尝试使用返回 CString 的函数。
  • 谢谢伙计们。Moo,不,它没有/
  • 哞,不,它没有 :-) 我只是在试图理解这个概念的阶段。
  • 除了#include'ing header,还需要导入lib。最简单的方法是将 #pragma comment(lib, "MyDll.lib") 添加到您执行包含的同一位置。

标签: c++ visual-studio-2010 dll mfc


【解决方案1】:

在您的应用中尝试此声明以消除编译器错误:

extern "C" __declspec(dllimport) CString SayHello (CString strName);

但您不能直接从 DLL 中获取应用程序。添加另一个 DLL 函数以将指向应用程序的指针传递给 DLL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多