【图文】[新手]C++ 动态库导出函数名“乱码”及解决

刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都“乱码”了。

导出过程如下:

新建一个Win32项目:

image

新建的解决方案里有几个导出的示例:

// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 DLLEXPORT_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// DLLEXPORT_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef DLLEXPORT_EXPORTS
#define DLLEXPORT_API __declspec(dllexport)
#else
#define DLLEXPORT_API __declspec(dllimport)
#endif

// 此类是从 dllExport.dll 导出的
class DLLEXPORT_API CdllExport {
public:
    CdllExport(void);
    // TODO: 在此添加您的方法。
};

extern DLLEXPORT_API int ndllExport;

DLLEXPORT_API int fndllExport(void);

于是我什么都不做,直接生成,并且在C#里导入看看能否调用,嗯……错误来了:

image

找不到入口点?难道是没导出么?我们用“Dependency Walker”来看看:

image

Oh, shit, WTF is this? 导出是导出了,不过怎么都乱码了?

 

 

右键选择“Undecorate C++ Functions”之后才出现了真面目:

image

不过我们的目的是要在C#中使用,而不是用眼睛在 Dependency 里面看啊!嗯,既然入口点的名字都变了,要不我们在 C# 中手动指定入口点试试?

image 

不错,成功了,我们终于可以使用 C++ dll里导出的函数了。

不过,这些乱码到底是什么东西?百度一下很轻松地找到了答案:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C MFC(Microsoft Foundation Class)是一种基于C++的应用程序框架,用于开发Windows平台上的图形用户界面(GUI)应用程序。它提供了许多类和函数来简化GUI应用程序的开发过程,包括绘制图形、处理用户输入、管理窗口和控件等。下面是一个简要的C MFC图文教程。 首先,为了使用C MFC,我们需要安装Visual Studio开发环境。在Visual Studio中创建一个新的MFC项目,选择适当的应用程序类型,例如单文档或多文档应用程序。在创建项目后,会生成一些默认的代码和文件,我们可以在这些基础上进行开发。 接下来,我们可以在窗口中添加各种控件,例如按钮、文本框、列表框等。可以通过拖拽控件到窗口上或使用资源编辑器来完成。对于每个控件,我们可以为其定义属性、事件处理程序等。 然后,我们可以在C++代码中编写事件处理程序,以响应控件的各种事件,例如按钮的点击事件。在事件处理程序中,我们可以执行各种操作,例如读取输入、更新界面、绘制图形等。 除了控件和事件处理程序,我们还可以使用MFC提供的绘图函数来绘制各种图形。这包括绘制直线、矩形、椭圆等基本图形,以及绘制文本、位图等其他元素。 最后,我们可以通过编译和运行应用程序来查看和测试我们的界面和功能。可以进行调试和修改,直到满足我们的需求为止。 总结起来,C MFC图文教程可以包括创建MFC项目、添加控件、编写事件处理程序、绘制图形等内容。通过学习这些基本知识,我们可以开始开发自己的MFC应用程序,并在Windows平台上创建功能丰富的图形界面。 ### 回答2: MFC(Microsoft Foundation Class)是微软提供的一种用于Windows平台开发视窗界面的编程框架。下面是一个简单的MFC图文教程。 1. 安装MFC:首先,确保已经安装了Visual Studio开发环境。在进行安装时,务必勾选MFC组件,这样才能使用MFC进行开发。 2. 创建MFC项目:打开Visual Studio,在菜单中选择“文件”->“新建”->“项目”,选择“Visual C++”->“MFC”->“MFC应用程序”。填写项目称和存储位置,点击“确定”。 3. 设计界面:在MFC应用程序向导中,可以选择对话框或文档视图结构。对话框结构用于创建基于对话框的用户界面,而文档视图结构用于创建多文档类型的应用程序。选择适合自己项目需求的结构。 4. 添加控件:在对话框或文档视图中,可以通过拖拽的方式添加各种控件,如按钮、文本框和列表框等。双击控件可以打开相应的事件处理函数,编写控件的功能代码。 5. 设置属性:对于每个控件或窗口,可以通过右击选择“属性”来设置其属性,如大小、位置和样式等。通过属性设置,可以自定义界面的外观和行为。 6. 处理事件:在事件处理函数中,可以编写代码响应用户的操作。例如,当用户点击按钮时,可以在按钮的点击事件处理函数中编写相应的代码。 7. 编译运行:完成界面设计和事件处理后,可以点击菜单中的“生成”->“生成解决方案”来编译项目。如果没有错误,可以运行程序进行测试。 8. 调试和发布:在开发过程中,可能会遇到各种问题。Visual Studio提供了强大的调试工具,可以帮助我们定位和修复错误。完成调试后,可以通过“生成”->“发布解决方案”将程序发布为可执行文件。 以上是一个简单的MFC图文教程,希望对您有所帮助。如果您想深入学习MFC,可以参考相关的书籍和在线教程,以便更好地掌握和应用这个强大的开发框架。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值