VC: dllを作る・使う

mydll.c

__declspec(dllexport) void foo();

#include <stdio.h>

void foo() {
  puts("foo()");
}

暗黙的リンク

インポートライブラリ「mydll.lib」*1をリンクする。
関数の場合「__declspec(dllimport)」は必須でないみたい。

__declspec(dllimport) void foo();

int main() {
  foo();
}

明示的リンク

LPFNDLLFUNC1ってどこで定義されているんだろう…

#include <windows.h>
#include <tchar.h>

int main() {
  HMODULE h;
  void (*f)(void);

  h = LoadLibrary(_T("mydll.dll"));
  f = (void (*)(void)) GetProcAddress(h, "foo");
  f();

  FreeLibrary(h);
}

*1:dllビルド時に作成される