VS命令行编译和使用动态库DLL

2022-12-24  本文已影响0人  CodingCode
  1. mylib.h
#pragma once

#ifdef MYLIB_EXPORTS
   #define MYLIB_API    __declspec(dllexport)
#else
   #define MYLIB_API    __declspec(dllimport)
#endif

MYLIB_API void mylib_init(int a);
  1. mylib.c
#include <stdio.h>

#include "mylib.h"

void mylib_init(int a) {
        printf("mylib is initialzied with %d\n", a);
}
  1. mylib.def
;
; Definition file of mylib.dll
;
LIBRARY "mylib.dll"
EXPORTS
        mylib_init
  1. myapp.c
#include <stdio.h>

#include "mylib.h"

int main(int argc, char *argv[]) {
   printf("Hello World!\n");

   mylib_init(100);
}
  1. makefile
all: mylib.dll myapp.exe

myapp.exe: myapp.c mylib.lib
        cl /nologo $**

mylib.dll: mylib.obj
#       link /nologo /dll $** /def:mylib.def /out:$@
        link /nologo /dll mylib.obj /out:mylib.dll

mylib.obj: mylib.c
        cl /nologo /c /DMYLIB_EXPORTS mylib.c /Fomylib.obj

#.c.obj:
#       cl /nologo /c $*.c

clean:
        if exist *.obj del *.obj
        if exist *.dll del *.dll
        if exist *.exe del *.exe
        if exist *.exp del *.exp
        if exist *.lib del *.lib

注意使用nmake运行。

上一篇 下一篇

猜你喜欢

热点阅读