Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flexdll is incompatible with visual studio 2017.3 #7615

Closed
vicuna opened this issue Aug 29, 2017 · 6 comments
Closed

Flexdll is incompatible with visual studio 2017.3 #7615

vicuna opened this issue Aug 29, 2017 · 6 comments

Comments

@vicuna
Copy link

vicuna commented Aug 29, 2017

Original bug ID: 7615
Reporter: schommer
Assigned to: @dra27
Status: resolved (set by @xavierleroy on 2017-10-09T18:26:12Z)
Resolution: fixed
Priority: normal
Severity: minor
Version: 4.05.0
Fixed in version: 4.06.0 +dev/beta1/beta2/rc1
Category: platform support (windows, cross-compilation, etc)
Monitored by: @gasche

Bug description

I'm unable to compile ocaml with the latest visual studio 2017 release. The problem seems to be that the generated: dyndll_implib.lib is a not a valid file. During the linking of for example the unix library the following error is reported:

../../boot/ocamlrun ../../tools/ocamlmklib -oc unix accept.obj bind.obj channels.obj close.obj close_on.obj connect.obj createprocess.obj dup.obj dup2.obj errmsg.obj getpeername.obj getpid.obj getsockname.obj gettimeofday.obj link.obj listen.obj lockf.obj lseek.obj nonblock.obj mkdir.obj open.obj pipe.obj read.obj readlink.obj rename.obj select.obj sendrecv.obj shutdown.obj sleep.obj socket.obj sockopt.obj startup.obj stat.obj symlink.obj system.obj times.obj unixsupport.obj windir.obj winwait.obj write.obj winlist.obj winworker.obj windbug.obj access.obj addrofstr.obj chdir.obj chmod.obj cst2constr.obj cstringv.obj envir.obj execv.obj execve.obj execvp.obj exit.obj getaddrinfo.obj getcwd.obj gethost.obj gethostname.obj getnameinfo.obj getproto.obj getserv.obj gmtime.obj putenv.obj rmdir.obj socketaddr.obj strofaddr.obj time.obj unlink.obj utimes.obj -ldopt ws2_32.lib -ldopt advapi32.lib -v

  • ....\boot\ocamlrun ....\flexdll\flexlink.exe -x64 -merge-manifest -stack 33554432 -o .\dllunix.dll accept.obj bind.obj channels.obj close.obj close_on.obj connect.obj createprocess.obj dup.obj dup2.obj errmsg.obj getpeername.obj getpid.obj getsockname.obj gettimeofday.obj link.obj listen.obj lockf.obj lseek.obj nonblock.obj mkdir.obj open.obj pipe.obj read.obj readlink.obj rename.obj select.obj sendrecv.obj shutdown.obj sleep.obj socket.obj sockopt.obj startup.obj stat.obj symlink.obj system.obj times.obj unixsupport.obj windir.obj winwait.obj write.obj winlist.obj winworker.obj windbug.obj access.obj addrofstr.obj chdir.obj chmod.obj cst2constr.obj cstringv.obj envir.obj execv.obj execve.obj execvp.obj exit.obj getaddrinfo.obj getcwd.obj gethost.obj gethostname.obj getnameinfo.obj getproto.obj getserv.obj gmtime.obj putenv.obj rmdir.obj socketaddr.obj strofaddr.obj time.obj unlink.obj utimes.obj ws2_32.lib advapi32.lib -LR:\usr\20170829\130101\release\win64\lib\ocaml\flexdll
    Bibliothek "D:\cygdrive\tmp\dyndll_implib25d6f4.lib" und Objekt "D:\makefactory\d633fcee-7987-486e-808e-e1b5081ae129\tmp\dyndll_implib25d6f4.exp" werden erstellt.
    D:\makefactory\d633fcee-7987-486e-808e-e1b5081ae129\tmp\dyndll_implib25d6f4.lib : fatal error LNK1136: illegal or corrupt file.
    ** Fatal error: Error during linking

Steps to reproduce

Happens during execution of make world.

@vicuna
Copy link
Author

vicuna commented Aug 29, 2017

Comment author: @dra27

What version of FlexDLL are you using or did you bootstrap it? Have you been successfully using an earlier release of VS2017, or is this the first time you've tried it with VS2017?

@vicuna
Copy link
Author

vicuna commented Aug 30, 2017

Comment author: schommer

Sorry for the missing details:
ocaml 4.05
flexdll latest (0.35)

The 2017.0 version did work without problem. It seems to be the case that only building shared libraries is broken.

@vicuna
Copy link
Author

vicuna commented Aug 30, 2017

Comment author: @dra27

I've replicated this and have a proposed fix to FlexDLL which I'm just testing before pushing there. Leaving this open because we'll need a new release of FlexDLL with the change, and the instructions and submodules on 4.05 and trunk will want updating accordingly.

@vicuna
Copy link
Author

vicuna commented Aug 31, 2017

Comment author: schommer

The fix worked for me too.

@vicuna
Copy link
Author

vicuna commented Oct 9, 2017

Comment author: @xavierleroy

I see a 0.36 version of FlexDLL was released in Sept 2017 integrating the changes discussed here, and that README.win32.adoc mentions this version. I'm tentatively marking this PR as resolved/fixed in 4.06.

@vicuna vicuna closed this as completed Oct 9, 2017
@vicuna
Copy link
Author

vicuna commented Oct 10, 2017

Comment author: schommer

Fine with me, I think the only thing remaining was whether we should report this to change of behavior to Microsoft.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants