Chinaunix首页 | 论坛 | 博客
  • 博客访问: 193389
  • 博文数量: 52
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 570
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-09 22:20
文章分类

全部博文(52)

文章存档

2009年(9)

2008年(27)

2007年(16)

我的朋友

分类: C/C++

2007-12-19 21:42:47

显式调用:
 
//model.cpp
 
#include
extern "C" __declspec(dllexport)  void HelloWorld()
{
    AfxMessageBox("Hello World from DLL!\n",IDOK);
}
 
cl model.cpp /LD 生成 model.dll
 
Dev环境中的调用:
//main.cpp
#include
#include
int main(int argc, char *argv[])
{
    FARPROC p;
    HINSTANCE h = LoadLibraryA("model.dll");
    p=GetProcAddress(h,"HelloWorld");
    (*p)();
    FreeLibrary(h);
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
编译后,把model.dll放到exe文件同目录下,运行即可.
 
VS环境下调用:
 
 
#include
void main()
{
HMODULE hm = LoadLibrary("model.dll");
FARPROC proc = GetProcAddress(hm,"HelloWorld");
proc();
FreeLibrary(hm);
}
 
cl main.cpp
 
C#的调用
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
 
namespace ConsoleApplication1
{
    class Program
    {
        [DllImport("model.dll")]
        static extern void HelloWorld();
        static void Main(string[] args)
        {
            HelloWorld();
            Console.Read();
           
        }
    }
}
 
csc Program.cs
_______________________________________________________________
 
隐式调用:
 
//aaa.def
LIBRARY "aaa"
EXPORTS
 hi;
 
//aaa.cpp
#include "aaa.h"
void hi()
{
 cout<<"hello"<}
 
//aaa.h
#include
using namespace std;
void hi();
 
编译成DLL和LIB文件
cl aaa.cpp aaa.def /LD
============================================
 
//bbb.cpp
#include
#include "aaa.h"
 
#pragma comment(lib,"aaa.lib")
void main()
{
 hi();
 system("PAUSE");
}
 
工程中添加DEF文件和H文件,LIB文件放到工程目录下,把DLL放到EXE文件目录下
 
 
 
 
 
 
 
阅读(1650) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~