Compiler Error C3744
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C3744.
__unhook must have at least 3 arguments for managed events
The __unhook function must take three parameters when used in a program that is compiled for Managed Extensions for C++.
__hook and __unhook are not compatible with /clr programming. Use the += and -= operators instead.
C3744 is only reachable using /clr:oldSyntax.
The following sample generates C3744:
// C3744.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
using namespace System;
public __delegate void delegate1();
[ event_source(managed) ]
public __gc class CPSource {
public:
__event delegate1* event1;
};
[event_receiver(managed)]
public __gc class CReceiver {
public:
void Handler1() {
}
void UnhookAll1(CPSource* pSrc, CReceiver* pRec) {
pRec;
__unhook(pSrc); // C3744
// The following line resolves the error.
// __unhook(&CPSource::event1, pSrc, &CReceiver::Handler1);
}
};
int main() {
}
Show: