美文网首页
VS命令行编译和使用动态库DLL

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

作者: CodingCode | 来源:发表于2022-12-24 08:17 被阅读0次
  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运行。

相关文章

网友评论

      本文标题:VS命令行编译和使用动态库DLL

      本文链接:https://www.haomeiwen.com/subject/cvubqdtx.html