contrib - visual studio 2015 integrated example
Nobody has claimed this yet.
- Dominant language
- OCaml
- Stars
- 115
- Forks
- 34
- PR merge metrics
- No merged PRs in 30d
Description
Here I've made a visual studio 2015 integrated example of using flexdll.
Open the sln, set startup project to exe, and set debug working directory to $(ProjectDir).run
You will now get working builds for debug/release & x86/x64. A working example prints this:
in main
99
now: 0
The project includes the latest master flexlink.exe build as of now (needed for x64 debugging reloc fixes); as well, I've had to rebuild the flexdll_*.obj using vs2015 toolchain (scripts for doing this are provided)
The project also contains my program linkwrap which I think was required to get the nice VS/msbuild building semantics I wanted. Chiefly, it rips apart the response file provided to msvc's link.exe from VS and analyzes it to determine wordsize and lib/obj dependencies for passing to flexdll's flexlink.exe
The vcxprojs have been modified simply to incorporate flexdll as an improved linker, by setting these things in the project:
<PropertyGroup Label="Globals">
<LinkToolPath>$(ProjectDir)flexdll</LinkToolPath>
<LinkToolExe>linkwrap.exe</LinkToolExe>
</PropertyGroup>
Note: you cannot use link-time code generation with flexdll. It's on by default in vcxprojs; I have turned it off. This should come as no great surprise as it probably incorporates a great deal of inscrutable proprietary junk (the problem will manifest as some kind of a premature EOF error while reading a .obj input)
The test confirms the main functionality I was interested in:
- a dll can leave an unresolved external to a global variable in the main program
- the dll can export functions without dllexport
- the global variable is correctly shared between the modules
- I can debug from the main and into the dll and back out
TODO - I haven't tested this with additional library directories. I will probably need to update it for that. I just need to get a WIP committed, so that's what you're seeing here.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the attached dlltest10.zip, its solution and vcxproj files, then inspect the provided scripts and linkwrap program. Run the solution with the stated startup project and debug directory; done means the debug/release x86/x64 builds work and the listed DLL linking and debugging behaviors are confirmed, including any additional library-directory handling.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ocaml
- Domain
- build-system, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100