• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 求助怎样写一个DLL呀?

求助怎样写一个DLL呀?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了怎样写求助信,怎样写求助信范文,怎样给政府写求助信,轻松筹求助信怎么写,求助信怎么写等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 求助 怎样写一个DLL呀?
描述:

小弟初学以的代码是我看别人的程序乱写的请问我应该怎么改在Application中运行这个DLL呀?谢谢!
//Testlib.def
; TestLib.def : Declares the module parameters.
LIBRARY      "TestLib"
DESCRIPTION 'TestLib for TestCom by (C) 2004'
EXPORTS
DllAddNum     @1
//Testlib.cpp
#include <windows.h>
#include "TEST.h"
// dll's main entry
BOOL WINAPI DllMain(HINSTANCE hmod,DWORD dwReason,LPVOID lpvReserved){
switch( dwReason ) {
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:      
break;
default:
break;
}
return TRUE;
} // DllMain
HRESULT WINAPI DllAddNum(DWORD *dwNum){
dwNum += 10;
return S_OK;
}
//ITEST.h
#if !defined(ITEST_H)
#define ITEST_H
#include "Objbase.h"
typedef struct ITEST* LPITEST;
#undef INTERFACE
#define INTERFACE ITEST
DECLARE_INTERFACE_( ITEST, IUnknown )
{
    STDMETHOD(QueryInterface)  (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;
    STDMETHOD_(DWORD,GetNum) (THIS) PURE;
    STDMETHOD(AddNum) (THIS_ DWORD dwNum) PURE;
};
HRESULT WINAPI DllAddNum(DWORD *dwNum);
#endif
//Test.h
#if !defined(AFX_TEST_H__1471A3C0_8213_4229_AA89_DA0DA977F55C__INCLUDED_)
#define AFX_TEST_H__1471A3C0_8213_4229_AA89_DA0DA977F55C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ITEST.h"
class TEST:ITEST
{
public:
TEST();
virtual ~TEST();
         STDMETHODIMP     QueryInterface(REFIID riid, LPVOID * ppvObj);
         STDMETHODIMP_(ULONG)  AddRef(void);
         STDMETHODIMP_(ULONG)  Release(void);
STDMETHODIMP_(DWORD)  GetNum(void);
         STDMETHODIMP          SetNum(DWORD dwNum);
protected:
DWORD dwNum;
long  m_lRef;
};
#endif
//TEST.cpp
#include "TEST.h"
TEST::TEST(){dwNum = 0;}
TEST::~TEST(){}
STDMETHODIMP TEST::QueryInterface(REFIID riid, LPVOID* ppv){
if (!this) 
return ResultFromScode(E_INVALIDARG);
*ppv = this;
((LPUNKNOWN)*ppv)->AddRef();
return S_OK;
}
STDMETHODIMP_(ULONG) TEST::AddRef(void){
if (!this) 
return 0;
InterlockedIncrement(&m_lRef);
return m_lRef;
}
STDMETHODIMP_(ULONG) TEST::Release(void){
if (!this || m_lRef == 0) 
return 0;
InterlockedDecrement(&m_lRef);
return m_lRef;
}
STDMETHODIMP_(DWORD) TEST::GetNum(void){return dwNum;}
STDMETHODIMP TEST::SetNum(DWORD dwNum){this->dwNum=dwNum;}


解决方案1:

就是用SDK写一个COM组件呀!
1. implement DllGetClassObject in your server component
STDAPI DllGetClassObject(
         REFCLSID rclsid,
         REFIID riid,
         PPVOID ppv)
{
  HRESULT hr = CLASS_E_CLASSNOTAVAILABLE;
  IUnknown* pCob = NULL;
  if (CLSID_DllTest == rclsid)
  {
    hr = E_OUTOFMEMORY;
    pCob = new TEST();
  }
  if (NULL != pCob)
  {
    hr = pCob->QueryInterface(riid, ppv);
    if (FAILED(hr))
    {
      DELETE_POINTER(pCob);
    }
  }
  return hr;
}
首先创建一个接口实现类的实例,然后调用它的QueryInterface。
2. On client side, call CoCreateInstance().
CoCreateInstance will call DllGetClassObject in your server component


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 求助怎样写一个DLL呀?

相关文章

  • 2017-06-04 quickpatch!!各位大侠看过来!!!
  • 2017-06-04 ATL开发控件,接口返回值问题(及)
  • 2017-06-05 用ATL做的ActiveX在首次浏览网页自动安装时,某个依赖文件总是不能释放
  • 2017-06-05 线程如何传递多个参数
  • 2017-06-05 怎么样才能替换com的method?就像hook一样??
  • 2017-06-04 IISISAPIFilter这样用程序来安装?
  • 2017-06-04 用mfc写的activex控件如何实现对象模型,就像excel、word那样。没有人会吗?
  • 2017-06-04 DirectShow求救:如何设置压缩、解压参数。
  • 2017-06-04 请问ATL注册的问题
  • 2017-06-04 ATL实现的一个COM,想将内部的一个结构体数据传出,我试用long指针,强制转换实现不了,请高手指点

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • DsoFramer添加自己定义的对话框的问题
    • 怎么在线程外中止一个用AfxBeginThread创建的线程????????????????
    • 好几天的问题没能解决!!!!!没钱了也要发帖~~~!回帖的以后再给分!!
    • GetProcAddress得到导出函数地址后却不能运行函数,请帮忙
    • 求IE工具条插件定制开发
    • 求教一个多线程的问题
    • 100分求助,急
    • RichEdit显示Gif图片后获得路径的问题的问题
    • 关于进程地址空间的保护~~~~!
    • 如何创建一个ATL组件,可以通过VBScript来调用??

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有