显式调用:
//model.cpp
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) |