链接到/ clr DLL时的C ++链接器错误(未解析的外部)

时间:2013-04-11 14:17:37

标签: c++ dll linker clr

我有一个/ clr选项为ON的DLL。我的DLL中有以下声明:

int __declspec(dllexport) __cdecl  test();

另外,我有一个控制台,其中/ clr选项为ON。并在main.cpp文件中声明以下声明:

int __declspec(dllimport) __cdecl  test();

我在控制台应用程序的属性设置中添加了对DLL项目的引用。但是我仍然从编译器中得到关于测试函数的未解析的外部。

我设法通过手动添加对编译器生成的lib文件的引用来编译。但是后来我无法在DLL函数中找到断点(它说源代码与原始版本不同或者符号尚未加载......)

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果您的DLL不使用任何托管功能,只需从该项目中删除/clr选项并重新编译即可。如果仍然出现错误,则可能与控制台应用程序中的引用有关。

如果DLL使用托管功能,那么您需要的是:

<强> DLL

#include "stdafx.h"

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

控制台应用

#include <iostream>

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

}