Re: Linking error in mixed code
<swtbase@gmail.com> wrote in message
news:2dd7ebf1-48ce-408e-a455-752e9b43e865@2g2000hsn.googlegroups.com...
Hi all,
I have a .NET application which needs to use some Win APIs. I set the
linker option (of VC++ .NET 2008 Express) to '\clr' to use mixed code
and added the following line of code:
...
#pragma unmanaged
namespace UnManagedFuncs
{
using namespace System::Runtime::InteropServices;
[DllImport("user32", EntryPoint = "SetClipboardViewer", CharSet =
CharSet::Unicode)]
extern "C" long __cdecl SetClipboardViewer(void* hWnd);
[DllImport("user32", EntryPoint = "SetWindowLong", CharSet =
CharSet::Unicode)]
extern "C" long __cdecl SetWindowLongW(void* hWnd, int nIndex, long
dwNewLong);
[DllImport("user32", EntryPoint = "CallWindowProc", CharSet =
CharSet::Unicode)]
extern "C" long __cdecl CallWindowProcW(long* lpPrevWndFunc, void*
hWnd, unsigned int uMsg, unsigned int wParam, long lParam );
...
}
#pragma managed
namespace MyApp
{
...
private: System::Void frmMain_Load(System::Object^
sender, System::EventArgs^ e)
{
// Register this window to receive 'clipboard contents
changed' event
UnManagedFuncs::SetClipboardViewer((void*)this->Handle);
UnManagedFuncs::HookWindow((void*)this-
Handle);
}
}
I get the following linker errors:
ScratchBook.obj : error LNK2019: unresolved external symbol
_CallWindowProcW referenced in function _UnManagedWinProc
ScratchBook.obj : error LNK2019: unresolved external symbol
_SetWindowLongW referenced in function "void __cdecl
UnManagedFuncs::HookWindow(void *)" (?
HookWindow@UnManagedFuncs@@YAXPAX@Z)
What is wrong?
Corrections for my last post...
[DllImport("user32.dll", CharSet = CharSet::Unicode)]
extern IntPtr SetClipboardViewer(IntPtr hWnd);
[DllImport("user32.dll", CharSet = CharSet::Unicode)]
extern long SetWindowLongW(IntPtr hWnd, int nIndex, long dwNewLong);
[DllImport("user32.dll", CharSet = CharSet::Unicode)]
extern IntPtr CallWindowProcW(IntPtr lpPrevWndFunc, IntPtr hWnd, unsigned
int uMsg, IntPtr wParam, IntPtr lParam );
Mark
--
Mark Salsbery
Microsoft MVP - Visual C++