【问题标题】:C++/CLI application for InjectTouchInput API. LNK2028 and LNK2019 errorsInjectTouchInput API 的 C++/CLI 应用程序。 LNK2028 和 LNK2019 错误
【发布时间】:2012-08-28 18:43:53
【问题描述】:

我正在尝试在 Visual Studio 2012(在 Win8 Release Preview 上)构建一个 C++/CLI 库,以在 C# 中使用函数 InitializeTouchInjectionInjectTouchInput

我这样定义我的班级

// MultiTouchWrapper.h
namespace MultiTouchWrapper {

    public ref class MultiTouchInjection
    {
            public:
            static bool InitializeMultiTouch(int maxCount);
            static bool InjectMultiTouch(int count, float *x, float *y, int *id);
    };
}

并实现功能

//MultiTouchWrapper.cpp

#include "stdafx.h"
#include "MultiTouchWrapper.h"

namespace MultiTouchWrapper{
    bool  MultiTouchInjection::InitializeMultiTouch(int maxCount){
        if(InitializeTouchInjection(maxCount, TOUCH_FEEDBACK_DEFAULT)) return true;
        return false;
    } 
    bool  MultiTouchInjection::InjectMultiTouch(int count, float *x, float *y, int *id){
        POINTER_TOUCH_INFO *contacts = new POINTER_TOUCH_INFO[count];
        for(int i=0; i<count; i++){
            contacts[i].pointerInfo.pointerType = PT_TOUCH;
            contacts[i].pointerInfo.pointerId = id[0];
            contacts[i].pointerInfo.ptPixelLocation.y = (LONG)y[0];
            contacts[i].pointerInfo.ptPixelLocation.x = (LONG)x[0];
            contacts[i].touchFlags = TOUCH_FLAG_NONE;
            contacts[i].touchMask = TOUCH_MASK_NONE;

        }
        if(InjectTouchInput(count, contacts)) return true; //defined like this to avoid a warning about BOOL vs bool.
        return false;
    }

在 stdafx.h 中,我包含 &lt;windows.h&gt;,它给出了 InitializeTouchInjectionInjectTouchInput&lt;WinUser.h&gt; 的定义。

我遇到的问题是,当我尝试构建这个库时,两个函数都出现错误 LNK2028 和 LNK2019:

Error   1   error LNK2028: unresolved token (0A00003B) "extern "C" int __stdcall InjectTouchInput(unsigned int,struct tagPOINTER_TOUCH_INFO const *)" (?InjectTouchInput@@$$J18YGHIPBUtagPOINTER_TOUCH_INFO@@@Z) referenced in function "public: static bool __clrcall MultiTouchWrapper::MultiTouchInjection::InjectMultiTouch(int,float *,float *,int *)" (?InjectMultiTouch@MultiTouchInjection@MultiTouchWrapper@@$$FSM_NHPAM0PAH@Z)    C:\Users\mediascape\documents\visual studio 2012\Projects\MultiTouchWrapper\MultiTouchWrapper\MultiTouchWrapper.obj MultiTouchWrapper
Error   2   error LNK2028: unresolved token (0A000063) "extern "C" int __stdcall InitializeTouchInjection(unsigned int,unsigned long)" (?InitializeTouchInjection@@$$J18YGHIK@Z) referenced in function "public: static bool __clrcall MultiTouchWrapper::MultiTouchInjection::InitializeMultiTouch(int)" (?InitializeMultiTouch@MultiTouchInjection@MultiTouchWrapper@@$$FSM_NH@Z) C:\Users\mediascape\documents\visual studio 2012\Projects\MultiTouchWrapper\MultiTouchWrapper\MultiTouchWrapper.obj MultiTouchWrapper
Error   3   error LNK2019: unresolved external symbol "extern "C" int __stdcall InitializeTouchInjection(unsigned int,unsigned long)" (?InitializeTouchInjection@@$$J18YGHIK@Z) referenced in function "public: static bool __clrcall MultiTouchWrapper::MultiTouchInjection::InitializeMultiTouch(int)" (?InitializeMultiTouch@MultiTouchInjection@MultiTouchWrapper@@$$FSM_NH@Z)  C:\Users\mediascape\documents\visual studio 2012\Projects\MultiTouchWrapper\MultiTouchWrapper\MultiTouchWrapper.obj MultiTouchWrapper
Error   4   error LNK2019: unresolved external symbol "extern "C" int __stdcall InjectTouchInput(unsigned int,struct tagPOINTER_TOUCH_INFO const *)" (?InjectTouchInput@@$$J18YGHIPBUtagPOINTER_TOUCH_INFO@@@Z) referenced in function "public: static bool __clrcall MultiTouchWrapper::MultiTouchInjection::InjectMultiTouch(int,float *,float *,int *)" (?InjectMultiTouch@MultiTouchInjection@MultiTouchWrapper@@$$FSM_NHPAM0PAH@Z) C:\Users\mediascape\documents\visual studio 2012\Projects\MultiTouchWrapper\MultiTouchWrapper\MultiTouchWrapper.obj MultiTouchWrapper

我不知道该怎么办。我尝试在配置属性 >> C/C++ >> 命令行菜单中包含 /LD。我尝试在高级菜单中将调用约定更改为__cdecl,但它总是恢复为__stdcall

关于如何解决这些链接器错误的任何帮助?

【问题讨论】:

  • 我相信,当您解决自己的问题时,惯例是将其作为答案输入并接受。
  • 不会让我马上接受,但我想我现在就试试。

标签: dll linker c++-cli


【解决方案1】:

我没有链接到 user32.lib 文件。对于那些想知道需要做什么的人,我使用this question 作为参考来确定去哪里以及问题所在。

【讨论】:

    猜你喜欢
    • 2012-07-05
    • 1970-01-01
    • 2013-01-04
    • 2021-01-17
    • 2023-03-27
    • 2012-02-09
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多