首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法链接Visual中的免疫32.dll

无法链接Visual中的免疫32.dll
EN

Stack Overflow用户
提问于 2022-09-02 00:50:27
回答 2查看 80关注 0票数 0

我试图在VisualStudio2022项目中使用来自ImmGetContext()<imm.h>,这会导致以下错误:

代码语言:javascript
复制
1>Project.obj : error LNK2019: unresolved external symbol ImmGetContext referenced in function "void __cdecl activeWindowChangeHandler(struct HWINEVENTHOOK__ *,unsigned long,struct HWND__ *,long,long,unsigned long,unsigned long)" (?activeWindowChangeHandler@@YAXPEAUHWINEVENTHOOK__@@KPEAUHWND__@@JJKK@Z)
1>Project.obj : error LNK2019: unresolved external symbol ImmGetConversionStatus referenced in function "void __cdecl activeWindowChangeHandler(struct HWINEVENTHOOK__ *,unsigned long,struct HWND__ *,long,long,unsigned long,unsigned long)" (?activeWindowChangeHandler@@YAXPEAUHWINEVENTHOOK__@@KPEAUHWND__@@JJKK@Z)
1>C:\Users\username\Project\x64\Debug\Project.exe : fatal error LNK1120: 2 unresolved externals

我尝试将imm32.dll从操作系统本身添加到项目的项目-> Linker -> General以及Linker选项中。它似乎已被识别,但无法解析,以下是更改后的新错误:

代码语言:javascript
复制
1>C:\Windows\SysWOW64\imm32.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2D0

不能正确地解析C:\Windows\SysWOW64\C:\Windows\System32\中的那个。

下面是我要实现的代码:

代码语言:javascript
复制
#include <iostream>
#include <windows.h>

using namespace std;

void CALLBACK activeWindowChangeHandler(HWINEVENTHOOK hWinEventHook, DWORD dwEvent, HWND hwnd, LONG idObject, LONG idChild, DWORD dwEventThread, DWORD dwmsEventTime) {
    DWORD dwConversion, dwSentence;
    auto himc = ImmGetContext(hwnd);
    if (ImmGetConversionStatus(himc, &dwConversion, &dwSentence)) {
        wcout << L"Current conversion mode: " << dwConversion << L"sentence mode: " << dwSentence << endl;
    }
    else {
        wcout << L"Failed to get conversion mode" << endl;
    }
}

int main() {
    auto hEvent = SetWinEventHook(EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_FOREGROUND, NULL, activeWindowChangeHandler, 0, 0, WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS);
    while (true);
}

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-02 01:35:30

好像我做得完全错了。将#pragma comment(lib, "imm32")添加到代码中解决了这个问题。

多亏了ImmGetContext returns zero always

票数 1
EN

Stack Overflow用户

发布于 2022-09-02 01:18:55

您正在使用的库应该是用于Win32的,您应该包括_和_

代码语言:javascript
复制
#include <immdev.h>
#include <imm.h>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73576743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档