質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1882閲覧

[c++] 未解決の外部シンボル ImmGetContext が関数 ○○ で参照されました が解決できない

Zemelua

総合スコア5

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/07/05 16:56

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++の開発に不慣れなこともあり、プロジェクト作成時からプロジェクト設定などはいじっていません。エラーメッセージで検索等してみましたが、原因がわかりません......

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

imm.hをインクルードするだけでは、関数の定義が有効になるだけで関数本体がない状態になります。
リンクするライブラリに「imm32.lib」を追加してみてください。

投稿2021/07/05 18:16

m-take

総合スコア249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zemelua

2021/07/06 07:29

ありがとうございます。動作しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問