[Issue 18764] New: -g makes OPTLINK fail to find symbols
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun Apr 15 15:19:57 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=18764
Issue ID: 18764
Summary: -g makes OPTLINK fail to find symbols
Product: D
Version: D2
Hardware: x86
OS: Windows
Status: NEW
Severity: normal
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: johnnymarler at gmail.com
Created attachment 1686
--> https://issues.dlang.org/attachment.cgi?id=1686&action=edit
DirectX Library OMF Format
Optlink failed to find symbols when passing `-g` to dmd. Note that the only
difference in the link command when passing `-g` is it adds the `/co` option to
OPTLINK (NOTE: not sure what this option means for OPTLINK).
To reproduce. clone the direct-x binding repository:
git clone https://github.com/evilrat666/directx-d
Create the following file:
--- issue.d
import directx.d2d1;
int main()
{
//auto result = D2D1CreateDevice(null, null, null);
ID2D1Factory direct2dFactory;
auto options = D2D1_FACTORY_OPTIONS(D2D1_DEBUG_LEVEL_WARNING);
auto result = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED,
&IID_ID2D1Factory, &options, cast(void**)&direct2dFactory);
return 0;
}
---
Download the attached directx omf library (converted from the COFF library).
Compilation/Link should work with the following:
dmd -I=<path-to-directx-d-repo> d2d1.omf.lib issue.d
Example:
did -I=..\directx-d\src d2d1.omf.lib issue.d
Now perform the same compilation but add `-g`, and you should get the following
linker error:
OPTLINK (R) for Win32 Release 8.00.17
Copyright (C) Digital Mars 1989-2013 All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
issue.obj(issue)
Error 42: Symbol Undefined _D2D1CreateDevice at 12
issue.obj(issue)
Error 42: Symbol Undefined _D2D1CreateDeviceContext at 12
Error: linker exited with status 2
--
More information about the Digitalmars-d-bugs
mailing list