简体   繁体   中英

C++ Linker Error (Unresolved External) when linking to /clr DLL

I have a DLL with the /clr option ON. I have the following declaration in my DLL:

int __declspec(dllexport) __cdecl  test();

Also, I have a console with /clr option ON. And have the following declaration on my main.cpp file:

int __declspec(dllimport) __cdecl  test();

I added the Reference to the DLL project on the property settings of my console application. But I still get unresolved externals from the compiler about the test function.

I managed to compile by manually adding a reference to the lib file generated by the compiler. But then I can't hit breakpoints inside the DLL functions (it says the source code is different from the original version or the symbols have not been loaded...)

Can someone help me?

If your DLL doesn't use any managed functionality, simply remove the /clr option from that project and recompile. If you still get the errors, it's probably related to the references in the console application.

If the DLL use managed functionality, what you need is instead like so:

DLL :

#include "stdafx.h"

namespace Test1
{
    public ref class Test2
    {
        public:
            static int test()
            {
                return 1;
            }
    };
}

Console app :

#include <iostream>

int main(int argc, char* argv[])
{
    int i = Test1::Test2::test();        
    std::cout << i << std::endl;
    return 0;

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM