Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4073050
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T16:57:52+00:00 2026-05-20T16:57:52+00:00

I have a template function in a shared library. I know the function will

  • 0

I have a template function in a shared library. I know the function will be called with either int or double arguments. I therefore instantiate the two versions of the template in the source file.

template void library::doSomething<int>(int const number);
template void library::doSomething<double>(double const number);

This solution works with g++ on Linux (getting a *.so), but when I try to compile the same code into a *.dll on Windows using VS2010 I get an error like this:

error LNK2001: unresolved external symbol doSomething

Exports are provided in a *.def file like:

EXPORTS

doSomething

Am I missing something or is this solution “incompatible” with Windows?

Thanks.

Petr

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-20T16:57:53+00:00Added an answer on May 20, 2026 at 4:57 pm

    You need to put the mangled names of the instantiated functions into the DEF file, not the C++ names.

    You can find out more in the MSDN article Exporting from a DLL Using DEF Files:

    If you are exporting functions in a C++ file, you have to either place the decorated names in the .def file or define your exported functions with standard C linkage by using extern "C".

    If you need to place the decorated names in the .def file, you can obtain them by using the DUMPBIN tool or by using the linker /MAP option. Note that the decorated names produced by the compiler are compiler specific.

    If you place the decorated names produced by the Visual C++ compiler into a .def file, applications that link to your DLL must also be built using the same version of Visual C++ so that the decorated names in the calling application match the exported names in the DLL’s .def file.

    Usually, using __declspec(dllexport) is much more straightforward and if you can use it you should consider doing so.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Assume I have a function template like this: template<class T> inline void doStuff(T* arr)
I have a template class like below. template<int S> class A { private: char
I am running Django trunk and have template Autoescaping on (default). Do I need
I am hosting SpiderMonkey in a current project and would like to have template
I have a template class that I serialize (call it C), for which I
I have some template code that I would prefer to have stored in a
we have a template project we often copy. so we can costumize the copy
I have a template in word (.docx) format and want to replace some placeholders
I have a Template Column under which I have Placed a Dropdownlist. Now I
I have a template class that is only valid for couple of template parameters:

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.