Hello experts!
I was testing compilation programs with dlls. So I have created simple dll with header:
int sum(int size)
{
return size*2;
}
And I have compiled it. I have also created simple console application using this library. In project options I have added headers path and libs path, but I have linking errors:
Linking...
C:\Documents and Settings\Jacek\Moje dokumenty\Visual Studio 2005\Projects\mylib\release\mylib.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x278
Please help, I don't understand this error and I don't know what to do.
Greetings

linking problems (invalid or corrupt file)
VJV
References branch is empty.O_o
Clas
There seems to be a bug in the property sheet... Go to the implib setting and touch the implib name (add a space at the end). When I tried that, the /IMPLIB appeared on the link command line.
-- Louis Lafreniere
namo21
The problem is that you are trying to link the dll directly to your application. An import lib (mylib.lib) should have been created when you linked the dll. That's the file you need to link in, not mylib.dll. That lib will cause your exe to load to your dll at runtime.
-- Louis Lafreniere
Jian Zeng
1 way: new project-> console application than in project options I set dll.
2 way: new project-> console application and there I set dll.
Neither of these methods makes mylib.lib file.
kangkang
Are you using Visual C++ 2003 or 2005.
If 2005, try right clicking the mylib project in the solution explorer and selecting "clean", or (if 2003) try a rebuild of the solution. If you still have the same problem, post the build output and someone might be able to offer the guidance.
dimaki
But command line doesn't contains /IMPLIB
/OUT:"C:\Documents and Settings\Jacek\Moje dokumenty\Visual Studio 2005\Projects\ezio\Release\ezio.dll" /INCREMENTAL:NO /NOLOGO /DLL /MANIFEST /MANIFESTFILE:"Release\ezio.dll.intermediate.manifest" /DEBUG /PDB:"c:\documents and settings\Jacekszefu\moje dokumenty\visual studio 2005\projects\ezio\release\ezio.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG /MACHINE:X86 /ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
USNgineer
------ Build started: Project: middle, Configuration: Release Win32 ------
Compiling...
stdafx.cpp
Compiling...
test.cpp
Linking...
C:\Documents and Settings\Jacek\Moje dokumenty\Visual Studio 2005\Projects\mylib\release\mylib.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x278
Build log was saved at "file://c:\Documents and Settings\Jacek\Moje dokumenty\Visual Studio 2005\Projects\test\test\Release\BuildLog.htm"
test - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
grr grr grr
/OUT:"C:\Documents and Settings\Jacek\Moje dokumenty\Visual Studio 2005\Projects\mylibrary\Release\mylibrary.dll" /INCREMENTAL:NO /NOLOGO /DLL /MANIFEST /MANIFESTFILE:"Release\mylibrary.dll.intermediate.manifest" /DEBUG /PDB:"c:\documents and settings\szefu\moje dokumenty\visual studio 2005\projects\mylibrary\release\mylibrary.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG /IMPLIB:"c:\documents and settings\Jacek\moje dokumenty\visual studio 2005\projects\mylibrary\release\mylibrary.lib" /MACHINE:X86 /ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib
Dag Mike
happyc
Nagu
------ Build started: Project: mylib, Configuration: Release Win32 ------
Compiling...
stdafx.cpp
Compiling...
mylib.cpp
Linking...
Generating code
Finished generating code
Creating manifest...
Build log was saved at "file://c:\Documents and Settings\Jacek\Moje dokumenty\Visual Studio 2005\Projects\mylib\mylib\Release\BuildLog.htm"
mylib - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
BillHie
Romantic_touch
Your middle project seems to be looking for the mylib dll in a different directory than the one it was built to. middle is complaining about "C:\Documents and Settings\Jacek\Moje dokumenty\Visual Studio 2005\Projects\mylib\release\mylib.dll" but it appears mylib is being output to "c:\Documents and Settings\Jacek\Moje dokumenty\Visual Studio 2005\Projects\mylib\mylib\Release\".
You might want remove the reference to mylib.dll and re-add it.
Johnn manc
If you want to generate a lib file for you mylib project, make sure that "Import Library" is not empty in Project Properties/Linker/Advanced.
Usually this is set to $(TargetDir)$(TargetName).lib.