如何把c++封装成DLL?

急急急,我用c++做了一个后台控制程序,现在需要把它封装成dll,然后在c#中调用,该怎么做?... 急急急,我用c++做了一个后台控制程序,现在需要把它封装成dll,然后在c#中调用,该怎么做? 展开
 我来答
longkun234
2012-05-06 · 超过17用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:55.5万
展开全部
如果你使用的是VISUAL STUDIO
1、从“文件”菜单中,选择“新建”,然后选择“项目…”。

2、从“项目类型”窗格中选择“Visual C++”下的“Win32”。

3、从“模板”窗格信胡仔中,选择“Win32 控制台应用程序”。

4、为项目选择一个名称,如“MathFuncsDll”,并将其输入“名称”字段。为解决方案选择一个名称,如“DynamicLibrary”,并将其输入“解决方案名滑汪称”字段。

5、按“确定”启动 Win32 应用程序向导。在“Win32 应用程序向导”对话框的“概述”页中,按“下一步”。

6、从“Win32 应用程序向导”中的“应用程序设置”页中,选择“应用程序类型”下的“DLL”(如果可用),或者选择“做中控制台应用程序”(如果“DLL”不可用)。某些版本的 Visual Studio 不支持使用向导创建 DLL 项目。您可以稍后对此进行更改,以将项目编译为 DLL。

7、从“Win32 应用程序向导”的“应用程序设置”页中,选择“附加选项”下的“空项目”。
如果你选择的是VC6.0那么你选择选择MFC AppWizdra(DLL)直接就可以生成
C#调用C++的Dll文件添加[DllImport("CSharpInvokeCPP.CPPDemo.dll")]就可以如果还不清楚可以参考这个网页http://www.soaspx.com/dotnet/csharp/csharp_20110406_7469.html
terranlong
2012-05-02 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3986万
展开全部
先闭纯笑建立MFC DLL工程,然后写你控制台的程序,下面给个简单的例子裤咐你看看

// exercise.cpp : 定义 DLL 应用程序的入口点。
//

#include "stdafx.h"
#include <Windows.h>

#ifdef _MANAGED
#pragma managed(push, off)
#endif

__declspec(dllexport) void f() // 定义你需要使用的函数
{
MessageBox(0, L"this is function f", 0, 0); // 弹出消息窗口
}

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

引入这个动态库,你就可以调用里面的 f 函数了,C#我不懂,轿含但在C++里可以这样调用

// dll.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
__declspec(dllimport) void f();
#pragma comment(lib, "exercise.lib")
int _tmain(int argc, _TCHAR* argv[])
{
f();
return 0;
}

执行这段代码就可以调用那个动态库里面的 f 函数弹出消息窗口
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
2015-10-30 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:883万
展开全部
如果使用的是VISUAL STUDIO:
1、从“文件”菜单中,选择“新建”,然后选择“项目…”.
2、从“项目类型”窗格中选择“Visual C++”下的“Win32”.
3、从“模板”窗格中,选择“Win32 控制台应用程序”.
4、为项目选择一个名称,如“MathFuncsDll”,并将其输入“名称”字段.为解决方案选择一个名称,如“DynamicLibrary”,并将其输入“解决方案名称”字段胡亏源.
5、按“确定”启动 Win32 应用程序向导.在“Win32 应用程序向导”对话框的“概述”空裂页中,按“下一步”.
6、从“Win32 应用程序向导”中的“应用程序设置”页中,选择“应用程序类型”下的“裤态DLL”(如果可用),或者选择“控制台应用程序”(如果“DLL”不可用).某些版本的 Visual Studio 不支持使用向导创建 DLL 项目.您可以稍后对此进行更改,以将项目编译为 DLL.
7、从“Win32 应用程序向导”的“应用程序设置”页中,选择“附加选项”下的“空项目”.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zyt02142
2012-05-08
知道答主
回答量:32
采纳率:0%
帮助的人:20.9万
展开全部
百度一下,,,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
投机士
2015-10-15 · TA获得超过10.5万个赞
知道大有可为答主
回答量:2.5万
采纳率:0%
帮助的人:3970万
展开全部
【1】静态调用
把TestDLL.lib和TestDLL.dll拷贝到你的测试工程下
你的dll声明方法_declspec(dllexport)是想要静态调用dll,所以需要添加如下代码:
//*/

#pragma#pragma comment(lib,"TestDLL.lib") /*(1)包含库文件,不写这句话,就需要通过程序配置包含这个库*/
_declspec(dllimport) int clFun(int a, int b);/*(2)声明函数是从dll中调用的,不写这句话,就需要包含头文件头文件*/

void main()
{
int a = 1,b = 2,c =0;
c = clFun(a,b);
}

/*
【2】动态调用

你想用LoadLibrary方法,就属于动态调用,这时可以不加你的声明_declspec(dllexport),只需要在TestDLL工程目录下的.def文件中把你要调用的函数名加进去宏携搜

; TestDLL.def : 声明 DLL 的模块参数。
LIBRARY "TestDLL"
EXPORTS
; 此处蔽历可以是显式导出
clFun

接下来TestDLL.dll拷贝到你的测试工程下,添加如下代码:
//*/

void main()
{
int a = 1,b = 2,c =0;

//定义一个函数指针函数指针
typedef int (* Any_name)(int param1, int param2);

//定义一个函数指针变量指针变量
Any_name pfFuncInDll = NULL;

/隐笑/加载dll
HINSTANCE hinst=LoadLibrary(L"TestDLL.dll");

if ( hinst != NULL )
{
//找到dll的clFun函数
pfFuncInDll = (Any_name)GetProcAddress(hinst, "clFun");

//调用dll里的函数
if (pfFuncInDll != NULL )
{
c = pfFuncInDll(a,b);
}
FreeLibrary(hinst);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式