0

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

int __declspec(dllexport) __cdecl  test();

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

int __declspec(dllimport) __cdecl  test();

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

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

有人能帮我吗?

4

1 回答 1

0

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

如果 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;

}
于 2013-04-11T18:16:23.157 回答