linker warning

G

Guest

Hi
I have a project that consists of an unmanaged DLL (extended stored
procedure) and a static library, which I have converted to managed, although
it has got one unmanaged function which is exported to the unmanaged.
I keep getting the linker warning 'warning - images compiled with /NOENTRY
may not run correctly'.
It doesn't seem to have any adverse effects, but what does it mean and how
do I get rid of it?
 
G

Guest

LINK : warning LNK4243: DLL containing objects compiled with /clr is not
linked with /NOENTRY; image may not run correctly

This is on the DLL that is itself unmanaged, but links to a function in a
managed static library

Cheers
 
I

Igor Tandetnik

Bonj said:
LINK : warning LNK4243: DLL containing objects compiled with /clr is
not linked with /NOENTRY; image may not run correctly

See KB Article KB814472 "PRB: Linker Warnings When You Build Managed
Extensions for C++ DLL Projects"
--
With best wishes,
Igor Tandetnik

"On two occasions, I have been asked [by members of Parliament], 'Pray,
Mr. Babbage, if you put into the machine wrong figures, will the right
answers come out?' I am not able to rightly apprehend the kind of
confusion of ideas that could provoke such a question." -- Charles
Babbage
 
G

Guest

That's great Igor, it solves that
However it causes:

Linking...
LINK : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO'
specification
Creating library Debug/xp_emb.lib and object Debug/xp_emb.exp
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other
libs; use /NODEFAULTLIB:library
msvcrt.lib(cinitexe.obj) : warning LNK4098: defaultlib 'libcmtd.lib'
conflicts with use of other libs; use /NODEFAULTLIB:library

I followed that article and my link command line thingy is now:
/OUT:"Debug/****.dll" /NOLOGO /LIBPATH:"C:\Documents and Settings\taylorb\My
Documents\Visual Studio Projects\Apps\xp_emb\reader\Debug" /DLL
/NODEFAULTLIB:"nochkclr.obj" /INCLUDE:"__DllMainCRTStartup@12" /DEBUG
/PDB:"Debug/xp_emb.pdb" /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:X86 msvcrt.lib
opends60.lib reader.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
odbc32.lib odbccp32.lib ".\reader\Debug\reader.lib"

It is an unmanaged extended stored procedure DLL in VC7.1, and reader.lib is
a managed static library project.

Any ideas?


Igor Tandetnik said:
Bonj said:
LINK : warning LNK4243: DLL containing objects compiled with /clr is
not linked with /NOENTRY; image may not run correctly

See KB Article KB814472 "PRB: Linker Warnings When You Build Managed
Extensions for C++ DLL Projects"
--
With best wishes,
Igor Tandetnik

"On two occasions, I have been asked [by members of Parliament], 'Pray,
Mr. Babbage, if you put into the machine wrong figures, will the right
answers come out?' I am not able to rightly apprehend the kind of
confusion of ideas that could provoke such a question." -- Charles
Babbage
 
G

Guest

obviously the one about editandcontinue I'm not that bothered about



Igor Tandetnik said:
Bonj said:
LINK : warning LNK4243: DLL containing objects compiled with /clr is
not linked with /NOENTRY; image may not run correctly

See KB Article KB814472 "PRB: Linker Warnings When You Build Managed
Extensions for C++ DLL Projects"
--
With best wishes,
Igor Tandetnik

"On two occasions, I have been asked [by members of Parliament], 'Pray,
Mr. Babbage, if you put into the machine wrong figures, will the right
answers come out?' I am not able to rightly apprehend the kind of
confusion of ideas that could provoke such a question." -- Charles
Babbage
 
I

Igor Tandetnik

Bonj said:
That's great Igor, it solves that
However it causes:

Linking...
LINK : warning LNK4075: ignoring '/EDITANDCONTINUE' due to
'/INCREMENTAL:NO' specification
Creating library Debug/xp_emb.lib and object Debug/xp_emb.exp
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of
other libs; use /NODEFAULTLIB:library
msvcrt.lib(cinitexe.obj) : warning LNK4098: defaultlib 'libcmtd.lib'
conflicts with use of other libs; use /NODEFAULTLIB:library

I suspect you should have only done the changes described in the article
to your Release build. Or at least in Debug build, replace msvcrt.lib
with msvcrtd.lib.

As to libcmtd.lib, make sure that you use CRT DLL. Project Properties |
C/C++ | Code Generation | Runtime Library, set to Multi-threaded DLL in
Release build and Multi-threaded Debug DLL in Debug build.
--
With best wishes,
Igor Tandetnik

"On two occasions, I have been asked [by members of Parliament], 'Pray,
Mr. Babbage, if you put into the machine wrong figures, will the right
answers come out?' I am not able to rightly apprehend the kind of
confusion of ideas that could provoke such a question." -- Charles
Babbage
 
G

Guest

Oh RIGHT! so the "d" is for debug!
OK, got it thanks
I'll try that



Igor Tandetnik said:
Bonj said:
That's great Igor, it solves that
However it causes:

Linking...
LINK : warning LNK4075: ignoring '/EDITANDCONTINUE' due to
'/INCREMENTAL:NO' specification
Creating library Debug/xp_emb.lib and object Debug/xp_emb.exp
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of
other libs; use /NODEFAULTLIB:library
msvcrt.lib(cinitexe.obj) : warning LNK4098: defaultlib 'libcmtd.lib'
conflicts with use of other libs; use /NODEFAULTLIB:library

I suspect you should have only done the changes described in the article
to your Release build. Or at least in Debug build, replace msvcrt.lib
with msvcrtd.lib.

As to libcmtd.lib, make sure that you use CRT DLL. Project Properties |
C/C++ | Code Generation | Runtime Library, set to Multi-threaded DLL in
Release build and Multi-threaded Debug DLL in Debug build.
--
With best wishes,
Igor Tandetnik

"On two occasions, I have been asked [by members of Parliament], 'Pray,
Mr. Babbage, if you put into the machine wrong figures, will the right
answers come out?' I am not able to rightly apprehend the kind of
confusion of ideas that could provoke such a question." -- Charles
Babbage
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top