javaのJNAで使用するためのdllファイルを作成しています。imm.hをインクルードしているにもかかわらず、コンパイルしようとするとエラーが出てしまいます。
コード:
c++
1// UMUClientLib.cpp 2#include "pch.h" 3#include "UMUClientLib.h" 4 5#include <imm.h> 6 7HWND hwnd; 8HIMC himc; 9 10void initialize(long hwndp) 11{ 12 hwnd = (HWND) hwndp; 13 himc = ImmGetContext(hwnd); 14 ImmReleaseContext(hwnd, himc); 15} 16 17BOOL enableIME() 18{ 19 BOOL b = ImmSetOpenStatus(himc, TRUE); 20 ImmSetOpenStatus(himc, TRUE); 21 ImmReleaseContext(hwnd, himc); 22 return b; 23}
c++
1// UMUClientLib.h 2#pragma once 3 4#ifdef UMUCLIENTLIB_EXPORTS 5#define UMUCLIENTLIB_API __declspec(dllexport) 6#else 7#define UMUCLIENTLIB_API __declspec(dllimport) 8#endif 9 10extern "C" UMUCLIENTLIB_API void initialize(long hwndp); 11 12extern "C" UMUCLIENTLIB_API BOOL enableIME(); 13
//UMUClientLib.def LIBRARY UMUClientLib EXPORTS initialize @1 enableIME @2
エラー一覧:
未解決の外部シンボル ImmGetContext が関数 initialize で参照されました 未解決の外部シンボル IMMReleaseContext が関数 enableIME で参照されました 未解決の外部シンボル IMMSetOpenStatus が関数 enableIME で参照されました
imm.h関係の関数を使用せず単純にprintfを行う場合ではうまくコンパイルでき、JNAでの使用も問題なく行えました。
visual studio c++ 2019で、dllテンプレートを使用しました。c++の開発に不慣れなこともあり、プロジェクト作成時からプロジェクト設定などはいじっていません。エラーメッセージで検索等してみましたが、原因がわかりません......
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/06 07:29