1、vs2008下如何在生成.dll的文件的同时生成.lib文件;
2、vs2008加载.lib同时,要定义个.h声明文件;是不是还有其他方法;
3、vs2008如何加载dll文件;
给个例子好么?
vs2008关于lib 和dll问题(C++)
答案:3 悬赏:20 手机版
解决时间 2021-03-03 09:19
- 提问者网友:聂風
- 2021-03-02 21:54
最佳答案
- 五星知识达人网友:七十二街
- 2021-03-02 22:36
1)默认情况下,自动生成lib文件。
2)如果你知道所有导出函数的返回值类型,参数和函数名。可以不用.h文件。不过这样只能用代码动态加载DLL,无法在程序初始化时自动加载。
3)请看示例。
HINSTANCE hInstDLL = LoadLibrary(_T("a.dll"));
if(hInstDLL != NULL)
{
typedef VOID (*pFn)(VOID); // 这里定义函数指针,要根据你的实际情况
pFn pFunc = (pFn)GetProcAddress(hInstDll, "要加载的函数名");
if(pFunc != NULL)
pFunc(); // 调用DLL中的函数
else
AfxMessageBox(_T("函数加载失败"));
}
else
AfxMessageBox(_T("DLL加载失败"));
2)如果你知道所有导出函数的返回值类型,参数和函数名。可以不用.h文件。不过这样只能用代码动态加载DLL,无法在程序初始化时自动加载。
3)请看示例。
HINSTANCE hInstDLL = LoadLibrary(_T("a.dll"));
if(hInstDLL != NULL)
{
typedef VOID (*pFn)(VOID); // 这里定义函数指针,要根据你的实际情况
pFn pFunc = (pFn)GetProcAddress(hInstDll, "要加载的函数名");
if(pFunc != NULL)
pFunc(); // 调用DLL中的函数
else
AfxMessageBox(_T("函数加载失败"));
}
else
AfxMessageBox(_T("DLL加载失败"));
全部回答
- 1楼网友:平生事
- 2021-03-03 00:56
1. 在编译器没毛病的情况下
2. 没
3. 连接和那个dll一起生成的lib,或者LoadLibrary+GetProcAddress
不好-ω-
- 2楼网友:低血压的长颈鹿
- 2021-03-02 23:19
用向导新建托管c++的类库,即dll,在需要的地方包含非托管代码的头文件,在托管dll工程属性里面,链接-》输入中填入非托管dll的lib文件,无论是添加引用路径还是输入全路径,保证文件都能找到。然后再托管代码的导出函数里面调用非托管代码的函数就行了。将非托管dll考到输出目录就ok了。托管代码中有些地方可能还需要显示的非托管标记,以及什么允许非托管代码的什么设置之类的忘了怎么写了。
__declspec(dllexport) int fndlltest(void);//非托管函数
托管dll
include "dlltest.h"
using namespace system;
namespace cppdlldotnet {
public ref class class1
{// todo: 在此处添加此类的方法。
public: static void myfun(){fndlltest();}};}
测试程序:
/ clrcppconsol.cpp: 主项目文件。
#include "stdafx.h"
using namespace system;
int main(array<system::string ^> ^args)
{
console::writeline(l"hello world");
cppdlldotnet::class1::myfun();//!!!!
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯